인사말

안녕하세요~!

비염과 함께 화려한 콧물 등장입니다 🤣

아침부터 물 같은 콧물 때문에 힘드네요 키키키

 

화요일이에요!

저희, 오늘도 파이팅 해봅시다 🔥💘

 

오늘의 일정
오전(09:00 ~ 13:00) 09:00 ~ 10:00 코드 카타 3문제, 팀 오전 회의
10:00 ~ 13:00 백준 (오븐 시계)
오후(14:00 ~ 18:00) 13:30 ~ 15:30 외출
15:30 ~ 18:00 백준 (주사위 세 개)
저녁(19:00 ~ 21:00) 19:00 ~ 21:00 머신러닝 특강_2

요약

  1. 코드 카타
    1. 문자열 뒤집기
    2. 편지
    3. 점의 위치 구하기
  2. 백준 (조건문)
    1. 오븐 시계
    2. 주사위 세 개 
  3. 머신러닝 특강_2
    1. 다항식
    2. 다항 선형회귀 사례
    3. 이중 분류

오전(09:00 ~ 13:00)

1. 코드 카타

1.1. 문자열 뒤집기

def solution(my_string):
    return my_string[::-1]

 

🤔 문제 풀이

  • my_string[::-1]
    • 문자열의 슬라이싱이라고 하죠? 그걸 음수형으로 하면 역순으로 간다고 해요 
    • 문자열[시작 번호:끝 번호] <- 문자열 슬라이싱

 

1.2. 편지

def solution(message):
    return len(message) *2

 

🤔 문제 풀이

<제한 사항>
공백도 하나의 문자로 취급합니다.
편지지의 여백은 생각하지 않습니다.
message는 영문 알파벳 대소문자, "!", "~" 또는 공백으로만 이루어져 있습니다.
할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적는다

 

문제를 풀기 위해 문제를 자세히 봐야 해요!

저는 이게 안 돼서 많이 혼났지만요 ㅋㅋㅋㅋ,,

문제를 보니까 힌트가 나왔죠?

message는 영문 알파벳 대소문자, "!", "~" 또는 공백으로만 이루어져 있습니다.
할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적는다
여백은 생각하지 않는다

 

이걸 써먹어 봅시다.

 

  • return len(message) *2
    • 글자 한 자 한 자가 2칸을 차지한다고 생각했어요
    • message의 길이를 구하고, 각 글자마다 2칸씩 차지를 할 거니까 *2를 해주어서 길이를 쟀어요

짜잔~ 정답입니다~!

 

1.3. 점의 위치 구하기

def solution(dot):
    answer = 0
    
    if dot[0] > 0 and dot[1] > 0:
        answer = 1
    elif dot[0] < 0 and dot[1] > 0:
        answer = 2
    elif dot[0] < 0 and dot[1] < 0:
        answer = 3
    else:
        answer = 4
    return answer

 

이거 백준으로도 풀었던 문제예요!

익숙하다 했는데, 프로그래머스에도 나오는 문제였네요 🤭

 

문제 보자마자 "어!! 이거 백준에서 풀었던 건데!!"라는 반응이 나와서

스스로에게 뿌듯했달까요 🤭

이번에도 잘 풀어주었답니다 히히

 

(10 : 00 ~ 13 : 00)

2. 백준

2.1. 오븐 시계

h, m =map(int,input().split())
cooktime = int(input())
h += cooktime //60
m += cooktime %60

if m >= 60:
    h += 1
    m -= 60

if h >= 24:
    h -= 24

print(h,m)

 

4타 만에 푼 문제였어요,, 하하하하ㅏㅎ 🤪

문제 해석하는 데에만 1시간 쓴 거 같아요

코드도 어떻게 짜야할지 모르겠구요,, 하

그래도 해낸 게 어딥니까!!

답안지 찾아서 그냥 풀어버리고 싶었는데, 그러면 공부를 한 보람이 없잖아요

그래서 튜터님께 가서 힌트 받고 그랬어요 스스로 풀고 싶어서요 😣

 

🤔 문제 풀이

  • h, m =map(int,input().split())
    • 백준에서 입력해 주는 값을 int로 변환하고, 공백을 기준으로 매칭시켜 줄 겁니다.
  • cooktime = int(input())
    • 조리 시간을 int형으로 받아줄게요
  • h += cooktime //60
    • 시간은 조리 시간에다가 60을 몫을 구하고, 몫이 있을 시, 더해줄게요
  • m += cooktime %60
    • 분은 조리 시간에다가 60을 나눈 나머지를 더해줄게요
    • 예) 61%60은 1이 나머지니까 m에 더해줄게요
  • if m >= 60:
        h += 1
        m -= 60
    • 분이 60이거나 60을 넘어서면 h에 1시간을 더해줄게요
    • 그러고 m에는 60을 빼준 값을 반환할게요
  • if h >= 24:
        h -= 24
    • h가 24보다 크거나 같을 때는 h에 -24를 해줄게요
    • 0시가 필요하니까요

오후(14:00 ~ 18:00)

2.2 주사위 세 개

dice1, dice2, dice3 = map(int,input().split())

if dice1==dice2==dice3:
    print(10000 +dice1 *1000)
elif dice1==dice2 or dice1 == dice3 or dice2 == dice3:
    same_number = dice1 if dice1 == dice2 or dice1 == dice3 else dice2
    prize = 1000 + same_number * 100
    print(prize)

else:
    print(max(dice1, dice2, dice3)*100)
같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.

 

🤔 문제 풀이

  • dice1, dice2, dice3 = map(int,input().split())
    • 주사위 세 개를 받아낼 겁니다
  • if dice1==dice2==dice3:
        print(10000 +dice1 *1000)
    • 주사위 세 개가 모두 같은 숫자를 띄울 때를 시작으로 조건문을 시작했습니다
  • elif dice1==dice2 or dice1 == dice3 or dice2 == dice3:
        same_number = dice1 if dice1 == dice2 or dice1 == dice3 else dice2
        prize = 1000 + same_number * 100
        print(prize)
    • 주사위 두 개가 같을 때의 조건문입니다
    • dice1&dice2 , dice1&dice3 , dice2&dice3이 주사위 두 개가 같을 때죠
    • same_number = dice1 if dice1 == dice2 or dice1 == dice3
      • dice1이 다른 dice2,3과 같을 때 dice1을 주어로 내세우겠다는 거예요
    • else dice2
      • 그 외에는 dice2를 주어로 하겠다는 거죠
  • else:
        print(max(dice1, dice2, dice3)*100)
    • 나머지는 주사위 세 개 모두 다를 때 max()함수를 써서 최댓값으로 곱해주었습니다.
#1트 
dice1, dice2, dice3 = map(int,input().split())
dice = [dice1, dice2, dice3]

prize_same3 = 10000 +dice *1000     # 뭐가 같은 숫자인지 어케 판별하냐 이거
prize_same2 = 1000 +dice *100
nothing_same_prize = max(dice)*100

if dice1==dice2==dice3:     # 주사위 모두 같은 숫자일 때
    print(prize_same3)
elif :
     print(prize_same2)

 

제 첫 번째 전적이에요

그래도 정답 코드와 처음부터 유사하게 다가온 거 같아요! (나름,,)

 

#2트 (TypeError)
dice1, dice2, dice3 = map(int,input().split())
dice = [dice1, dice2, dice3]

prize_same3 = 10000 +dice *1000
prize_same2 = 1000 +dice *100
nothing_same_prize = max(dice)*100

if dice1==dice2==dice3:
    print(prize_same3)
elif dice1==dice2 or dice1 == dice3 or dice2 == dice3:
    print(prize_same2)
else:
    print(nothing_same_prize)
#3트 "틀렸습니다"
dice1, dice2, dice3 = map(int,input().split())

if dice1==dice2==dice3:
    print(10000 +dice1 *1000)
elif dice1==dice2 or dice1 == dice3 or dice2 == dice3: # 여기서 같은 숫자 어케 판별함?
    print(1000 +dice1 *100)
else:
    print(max(dice1, dice2, dice3)*100)
#4트 "맞췄습니다"
dice1, dice2, dice3 = map(int,input().split())

if dice1==dice2==dice3:
    print(10000 +dice1 *1000)
    
elif dice1==dice2 or dice1 == dice3 or dice2 == dice3:
    same_number = dice1 if dice1 == dice2 or dice1 == dice3 else dice2 # 이렇게군
    prize = 1000 + same_number * 100
    print(prize)

else:
    print(max(dice1, dice2, dice3)*100)

 

다른 동기님 덕분에 문제를 해결할 수 있었습니다 🥰

감사합니다 히히

 

 

이렇게 해서 백준(입출력과 사칙연산, 조건문)의 두 가지 제목이 끝났어요!

내일부터는 백준_for문 문제를 풀어볼 겁니다!


저녁(19:00 ~ 21:00)

3. 머신러닝 특강_2

3.1. 다항식

 

3.2. 다항 선형회귀 사례

 

 

3.3 이중 분류

 

🔥 추가 정보

  • 0은 False을 의미하는 값입니다
  • 1은 True를 의미하는 값입니다
  • 기준은 0.5를 기준으로 합니다

마무리

오늘은 두 문제만 풀었네요

음,,

그래도 한 문제 한 문제 접근방식을 스스로 깨달으면서 꾸준히 한다는 게, 그게 정말 어려운 거라 생각해요

 

솔직히 인터넷에 문제 이름 검색하면 답을 바로 알 수 있잖아요

오늘 진짜,,, 그러고 싶었거든요

그래도 참고 스스로 끝까지 머리 굴리며 해봤어요 ㅎㅎㅎ

아구~ 잘했어요 민경이~

 

아! 그리고

알고리즘 문제를 풀다보면서 느낀 거지만

식별자 명칭을 명확히 표시해야겠더라구요

 

저는 문제를 장시간 오래 봐서 뭐가 뭔지 알잖아요?

 

근데

힌트를 얻으러 갈 때나, 다른 분께 의견을 물어보면서 제 코드를 보여드릴 때

가독성이 떨어진다고 해야 할까요? 바로 식별하기 어렵겠더라구요

 

그래서

식별자 명칭에 신경 쓰면서 코드를 짜려고 해요

좋은 습관을 하나 찾은 걸지두요 🤭 

 

어쨌든

오늘도 모두들, 수고 많으셨어요!

좋은 밤 보내세요 🤭 

+ Recent posts