인사말

안녕하세요~!~!

오늘은 큰일 났어요! 오전에 문제 푸는 데에 체력을 다 써버려서 집중이 잘 안 되더라고요

밍기적 밍기적거리며 해내긴 했지만,, 찜찜하네요 🥲

그리고

튜터님과 사람인 사이트에 들어가서 보면서 상담을 했는데,,

미리 매 맞은 기분이라 얼얼했어요 ㅋㅋㅋㅋㅋㅋ,,

더 공부에 집중이 안 됐다는 사~실~!~!~!~!~!

 

그래도 하던 게 있으니까 굳세고 꿋꿋하게 해 봅시다!

파이팅~!~!

 

오늘의 일정
오전(09:00 ~ 13:00) 09:00~10:00 코드 카타 2문제 및 팀 오전 회의
10:00~13:00 프로그래머스 4문제
오후(14:00 ~ 18:00) 14:00~16:00 파이썬 기본 이론 공부_문자열 자료형
16:00~18:00 파이썬 기본 이론 공부_리스트 자료형
저녁(19:00 ~ 21:00) 19:00~20:00 진로 상담
20:00~21:00 TIL 정리

요약

  1. 코드 카타 2문제
    1. 수 조작하기 1
    2. 정수 찾기
  2. 프로그래머스 4문제
    1. 삼각형의 완성 조건 (2) https://bmk0703.tistory.com/126
    2. 구슬을 나누는 경우의 수 https://bmk0703.tistory.com/127
    3. 캐릭터의 좌표 https://bmk0703.tistory.com/128
    4. 외계어 사전 https://bmk0703.tistory.com/129
  3. 파이썬 기본 이론 공부
    1. 문자열 자료형 https://bmk0703.tistory.com/123
    2. 리스트 자료형 https://bmk0703.tistory.com/130

오전(09:00 ~ 13:00)

1. 코드 카타 2문제

1.1. 수 조작하기 1

def solution(n, control):
    answer = n
    control_num = {"w":+1, "s":-1, "d": +10, "a":-10}
    
    for i in control:
        answer += control_num[i]
        
    return answer

 

🤔 문제 풀이

  • 딕셔너리로 짝을 지어줬어요
  • 그러고 control를 for문으로 돌려줘요
    • answer=n으로 할당해 주었기 때문에 딕셔너리 키에 대한 값을 불러오며 더해주면 문제 해결!

 

1.2. 정수 찾기

def solution(num_list, n):
    return 1 if n in num_list else 0

 

🤔 문제 풀이

  • num_list에 n의 값이 있다면 1을 리턴하고, 아닐 경우에는 0을 리턴하도록 하면 문제 해결!

 

2. 프로그래머스 4문제

2.1. 삼각형의 완성 조건 (2)

def solution(sides):
    answer = 0
    max_num = max(sides)	# sides의 max값
    min_num = min(sides)	# sides의 min값
    sum_num = sum(sides)	# sides의 sum값
    
    #가장 긴 변이 sides에 있을 경우
    for i in range(1, max_num+1):
        if i+min_num > max_num: 
            answer += 1
            
    #가장 긴 변이 새로운 변일 경우
    for i in range(max_num+1, sum_num):
        answer +=1
    
    return answer

https://bmk0703.tistory.com/126

🤔 문제 풀이

  • max_num = max(sides) # sides의 max값
    min_num = min(sides) # sides의 min값
    sum_num = sum(sides) # sides의 sum값
    • 삼각형을 만들 거기 때문에 모든 변에 대해서 정의 내려줬어요
  • #가장 긴 변이 sides에 있을 경우
    for i in range(1, max_num+1):
        if i+min_num > max_num: 
            answer += 1
    •  for i in range(1, max_num+1):
      • 가장 긴 변이 sides에 이미 있을 때, range 범위를 1부터 max_num+1로 해주었어요
    • if i+min_num > max_num: 
      • 만약 i+min_num이 max_num보다 크다면 answer에 +1씩 더해줄게요
        • 문제를 다시 읽어보시면 경우의 수가 적어도 2가지가 나오잖아요 그걸 충족시키기 위해서 만든 코드입니다!
  • #가장 긴 변이 새로운 변일 경우
    for i in range(max_num+1, sum_num):
        answer +=1
    • for i in range(max_num+1, sum_num):
      • 가장 긴 변이 새로운 변일 경우예요
      • 그럼 적어도 max_num+1보다 큰 숫자부터 sides의 sum 만큼이 범위가 되겠죠?
    • answer +=1
      • 그리고 그 값들을 answer에 더해주면 문제 해결!

 

 

 

2.2. 구슬을 나누는 경우의 수

from math import factorial as fac

def solution(balls, share):
    return fac(balls)/(fac(balls - share)*fac(share))

https://bmk0703.tistory.com/127

🤔 문제 풀이

  • 이 문제는 모든 경우의 수를 팩토리얼로 만들어서 식을 완성하는 문제였어요
  • 문제 밑에 있는 Hint 식을 파이썬에 그대로 재현해 내면 해결할 수 있는 문제였어요!

 

9점이나 주는 문제였네요 ㄷㄷ

 

2.3. 캐릭터의 좌표

def solution(keyinput, board):
    len_x = board[0]//2
    len_y = board[1]//2
    
    direction = {"up":(0,1), "down":(0,-1),
                "left":(-1,0), "right":(1,0)}
    x,y = 0,0
    
    for i in keyinput:
        direction_x, direction_y = direction[i]
        if abs(x+direction_x) > len_x or abs(y+direction_y) > len_y:
            continue
        
        else:
            x,y = (x+direction_x),(y+direction_y)
        
    return [x,y]

https://bmk0703.tistory.com/128

🤔 문제 풀이

  • len_x = board[0]//2
    len_y = board[1]//2
    • board판의 정가운데에서 출발하기 때문에 x와 y의 길이를 할당시켜 주었어요
  • direction = {"up":(0,1), "down":(0,-1),
                        "left":(-1,0), "right":(1,0)}
    • 그리고 문제에서 준 조건들을 딕셔너리로 정리해 주었어요
  • x, y = 0,0
    • x, y를 각각 0으로 할당시켜 주고
  • for i in keyinput:
          direction_x, direction_y = direction[i]
          if abs(x+direction_x) > len_x or abs(y+direction_y) > len_y:
                continue
    • 방향이 적혀있는 keyinput을 for문으로 돌려줘요
    • 그리고 x와 y에 대한 값을 딕셔너리의 value 값과 할당해 줘요 (direction_x, direction_y)
    • 만약 x값이 board판 크기를 이탈하거나, y값이 board판 크기를 이탈할 때 계속 if문을 돌려주도록 했어요(continue)
  • else:
            x, y = (x+direction_x), (y+direction_y)
    • 만약 board판을 이탈하지 않는 값이라면 x, y에 할당되도록 해주고 return 하면 문제 해결!

 

어려웠는데 8점밖에 안 주시다뇨,,

 

2.4. 외계어 사전

def solution(spell, dic):
    
    for i in dic:
        if not set(spell) - set(i):
            return 1
    return 2

https://bmk0703.tistory.com/129

🤔 문제 풀이

  • set함수를 써서 해결한 문제예요
set함수는 중복을 허용하지 않는 함수이고, 순서를 보장해주진 않아요
  • if not set(spell) - set(i):
유의사항
입출력 예 #3에서 "moos", "smm", "som"도 "s", "o", "m", "d"를 조합해 만들 수 있지만
spell의 원소를 모두 사용해야 하기 때문에 정답이 아닙니다.
  • 그래서 if not을 썼어요 문제가 단어당 한 번씩만 써야 하는 문제거든요!
  • 저 조건에 들어맞는다면 1을 return 하도록 해주면 문제 해결!
  • 기본값으로는 2를 return 하도록 코드를 만들어놓았습니다. 

오후(14:00 ~ 18:00)

3. 파이썬 기본 이론 공부

3.1. 문자열 자료형 https://bmk0703.tistory.com/123

3.2. 리스트 자료형 https://bmk0703.tistory.com/130

 


마무리

이러나저러나 꾸역꾸역 오늘 할 일은 다 완수해 냈어요 ( ✌︎'ω')✌︎

파이썬 기본 이론 공부를 하다 보니까, 제가 부족한 개념이 뭔지 알겠더라구요

다시 태초 마을로 돌아가서 차근차근 공부하니까 도움이 되네요!

기본기 탄탄히, 얼른 하면서 장고 공부 각 잡고 하려구요

휴우,, 재밌는 거라 생각하고 해 봅시다

 

오늘도 수고 많으셨어요~!!

감사합니다 😉

+ Recent posts