인사말

앞으로의 제 앞날이 걱정되네요

일단 해야죠 뭐,,

숨 참고, 공부 dive~~

 

파이팅!!!!

 

오늘의 일정
오전(09:00 ~ 13:00) 09:00~10:00 코드 카타 2문제 및 팀 오전 회의
10:00~13:00 프로그래머스 4문제
오후(14:00 ~ 18:00) 14:00~15:00 베이직반 수업
15:00~18:00 장고 강의

요약

  1. 코드 카타 2문제
    1. 문자열 붙여서 출력하기
    2. 대문자로 바꾸기
  2. 프로그래머스 4문제
    1. 등수 매기기 https://bmk0703.tistory.com/139
    2. 저주의 숫자 3 https://bmk0703.tistory.com/140
    3. 유한소수 판별하기 https://bmk0703.tistory.com/141
    4. 문자열 밀기 https://bmk0703.tistory.com/142
  3. 베이직반 수업
  4. 장고 강의
    1. App(앱) 생성 및 등록하기 https://bmk0703.tistory.com/143
    2. 클라이언트 - 서버 구조 이해하기 https://bmk0703.tistory.com/144

오전(09:00 ~ 13:00)

1. 코드 카타 2문제

1.1. 문자열 붙여서 출력하기

str1, str2 = input().strip().split(' ')
print(str1+str2)

 

🤔 문제 풀이

  • 문자열은 +로 해서 바로 붙일 수 있어요

 

1.2. 대문자로 바꾸기

def solution(myString):
    return myString.upper()

 

🤔 문제 풀이

  • 문자를 대문자로 바꿔주는 함수는 .upper()이에요
  • 반대로 소문자로 바꿔주는 함수는 .lower()이에요

2. 프로그래머스 4문제

2.1. 등수 매기기

def solution(score):
    answer = []
    avg = []
    
    for i in score:                         # 각 점수들의 평균들 구하기
        avg.append(sum(i)/len(i))
        arr_avg = sorted(avg, reverse=True) # 내림차순으로 정렬하기
        
    for i in avg:                           # 등수 매기기
        answer.append(arr_avg.index(i)+1)   # index는 0부터 시작해서 +1을 해줌
    return answer

https://bmk0703.tistory.com/139

🤔 문제 풀이

  • avg = []
    • 각 점수들의 평균값을 담아줄 리스트를 새로 추가해 줘요
  • for i in score:                                                 # 각 점수들의 평균들 구하기
          avg.append(sum(i)/len(i))
          arr_avg = sorted(avg, reverse=True) # 내림차순으로 정렬하기
    • 이중 리스트로 들어가 있지만, for문으로 하나하나 다 값을 순회할 수 있어요
    • 각각의 평균을 구해서 avg 리스트에 추가해 줘요
    • 추가된 avg 리스트를 정렬해 준 후, 내림차순으로 다시 정렬해 줄게요
  • for i in avg:                                                      # 등수 매기기
          answer.append(arr_avg.index(i)+1)   # index는 0부터 시작해서 +1을 해줌
    • 평균을 구해놨덤 avg 리스트로 등수를 매겨줄게요
    • arr.avg의 크기 순서대로 인덱싱 한 값을 answer에 넣어줘요
  • return answer
    • 그리고 answer을 return 하면 문제 해결!

 

2.2. 저주의 숫자 3

def solution(n):
    answer = 0
    
    for i in range(n):
        answer += 1                                  # 범위값까지 계속 +1 해주기
        while answer % 3 == 0 or '3' in str(answer): # answer에 3의 배수 또는 '3'이 있으면
            answer += 1                              # 그 n의 숫자에 +1을 해줘서 없애기
            
    return answer

https://bmk0703.tistory.com/140

🤔 문제 풀이

  • for i in range(n):
    • 범위값으로 n까지 해주었어요
  • answer += 1
    • answer에는 점점 +1을 해가며 값이 커질 겁니다.
  • while answer % 3 == 0 or '3' in str(answer): # answer에 3의 배수 또는 '3'이 있으면
           answer += 1                                                         # 그 숫자에 +1을 해줘서 없애기
    • if가 아니라 while로 해주었어요
      • 3의 배수와 '3'이 없어질 때까지 계속 돌려야 하기 때문이에요
  • return answer
    • return answer을 해주면 문제 해결!

 

2.3. 유한소수 판별하기

from math import gcd    # gcd 함수는 최대 공약수를 구할 때 쓴다.
def solution(a, b):
    # 최대 공약수 구하기
    b //= gcd(a,b)      # a와 b의 최대 공약수를 분모가 될 b에 몫으로 계산한 값을 반환
    
    while b % 2 == 0:   # 기약분수일 때 분모가 2의 배수인 경우
        b //= 2         # 소수점을 날리기 위해서 몫 계산식으로 바꿀 거라고 정의함
        
    while b % 5 == 0:   # 기약분수일 때 분모가 5의 배수인 경우
        b //= 5         # 소수점을 날리기 위해서 몫 계산식으로 바꿀 거라고 정의함
        
    return 1 if b == 1 else 2   # 나머지에 다시 몫으로 계산한 값이 2와 5의 배수였으면 b는 1을 반환하게 됨.
                                # b값이 2와 5의 배수였다면 유한소수, 아니었으면 무한소수임.

https://bmk0703.tistory.com/141

🤔 문제 풀이

  • 문제를 읽자마자 b값이 2와 5의 최대 공약수이거나 배수이면 유한소수겠구나 싶었어요
  • from math import gcd
    • b //= gcd(a,b)
    • 최대 공약수는 math에서 gcd 함수를 불러와서 해결해 주었어요
  •  while b % 2 == 0:
            b //= 2 
    • 2의 배수를 찾아내서 그 값들은 소수점을 버리고 몫만 챙기겠다고 정의했어요
    • 유한소수이기 때문에 몫만 챙겨가면 되거든요
  •  while b % 5 == 0: 
            b //= 5 
    • 5의 배수일 경우에도 마찬가지로 해주었어요
  • return 1 if b == 1 else 2
    • 마무리로 삼항 연산자로 정리해 주었어요
    • b == 1일 경우가 2와 5의 배수여서 나누어 떨어졌음을 의미해요
      • 이 경우일 경우 유한소수이기 때문에 1로 출력되게 하고, 아닐 경우 2로 출력하게 하면, 문제 해결

 

2.4. 문자열 밀기

def solution(A, B):

    for i in range(len(A)):         # len(A) 만큼 돌아가면서 재배열
        if A == B:                  # 만약 재배열되더라도 A와 B가 같으면
            return i                # 횟수를 찾기 위한 코드
        A = A[-1] + A[:-1]          # 맨 마지막에 있던 문자가 맨 앞으로 오고, 처음부터 끝까지를 이어붙이면 A 완성
    
    return -1

https://bmk0703.tistory.com/142

🤔 문제 풀이

  • for i in range(len(A)):
    • len(A) 만큼 범위로 하여 for문을 돌려줄게요
  • if A == B: 
          return i
    • 만약에 A와 B가 같다면, i의 숫자를 반환해 줄게요
    • range는 0부터 시작이니까 "abc" == "abc" 조건도 충족이 되겠죠?
  • A = A[-1] + A[:-1]
    • for문을 둘렸을 때 A가 어떻게 구성될 것인지 재정의 해주었어요
  • return -1
    • A != B일 경우 -1을 리턴하도록 해주면, 문제 해결!

오후(14:00 ~ 18:00)

3. 베이직반 수업

4. 장고 강의 

4.1. App(앱) 생성 및 등록하기

4.2. 클라이언트 - 서버 구조 이해하기 

 

🐾Recent posts