문제

문제

 

처음 작성한 코드

def solution(n):
    ans = []
    while(n):
        n,b = divmod(n,3)
        ans.append(b)
    answer = sum([value*(3**i) for i,value in enumerate(list(reversed(ans)))])
    return answer

 

깨달은 점

파이썬에서 제곱은 ** 으로 쓴다.

divmod()하면 몫과 나머지를 반환해준다.

이번 문제는 잘 짠 것 같당~:)

'Programmers' 카테고리의 다른 글

모의고사  (0) 2020.12.30
체육복  (0) 2020.12.30
2016년  (0) 2020.12.29
같은 숫자는 싫어  (0) 2020.12.29
나누어 떨어지는 숫자 배열  (0) 2020.12.29

문제

문제

처음 작성한 코드

def solution(a, b):
    month = [31,29,31,30,31,30,31,31,30,31,30,31]
    dayOfWeek = ['MON','TUE','WED','THU','FRI','SAT','SUN']
    day = (sum([month[i] for i in range(a-1)])+b)%7-1
    return dayOfWeek[(4+day)%7]

 

코드 리뷰 후

def solution(a, b):
    month = [31,29,31,30,31,30,31,31,30,31,30,31]
    dayOfWeek = ['MON','TUE','WED','THU','FRI','SAT','SUN']
    day = (sum(month[:a-1])+b)%7-1
    return dayOfWeek[(4+day)%7]

 

깨달은 점

list[:n] 의 사용법을 상기시켰다.

파이썬 어렵다..

'Programmers' 카테고리의 다른 글

체육복  (0) 2020.12.30
3진법 뒤집기  (0) 2020.12.29
같은 숫자는 싫어  (0) 2020.12.29
나누어 떨어지는 숫자 배열  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29

문제

문제

처음 작성한 코드

def solution(arr):
    answer = []
    for idx,value in enumerate(arr):
        if idx==0 or arr[idx]!=arr[idx-1]:
            answer.append(value)
    return answer

 

코드 리뷰 후

def solution(arr):
    answer = [value for idx,value in enumerate(arr) if idx==0 or arr[idx]!=arr[idx-1]]
    return answer

 

깨달은 점

enumerate()는 인덱스와 인덱스에 해당하는 값을 반환해준다.
한 줄에 한 번에 나타내는 것이 아직은 익숙치않다..

'Programmers' 카테고리의 다른 글

3진법 뒤집기  (0) 2020.12.29
2016년  (0) 2020.12.29
나누어 떨어지는 숫자 배열  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29
문자열 내 마음대로 정렬하기  (0) 2020.12.29

문제

문제

 

처음 작성한 코드

def solution(arr, divisor):
    answer = []
    for i in arr:
        if i%divisor==0:
            answer.append(i)
    if len(answer)==0:
        answer.append(-1)
    return sorted(answer)

 

코드 리뷰 후

def solution(arr, divisor):
    return sorted([i for i in arr if i%divisor==0]) or [-1]

 

깨달은 점

파이썬은 return 할 때, return A or B 이런 식으로 쓸 수 있다. 참이면 A 아니면 B를 return 해준다. 신기하다.

리스트 관련해서 [i for i in arr] 이렇게 쓰는 법은 알고 있었는데 뒤에 조건 붙여도 되는 것을 처음 알게되었다.

'Programmers' 카테고리의 다른 글

2016년  (0) 2020.12.29
같은 숫자는 싫어  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29
문자열 내 마음대로 정렬하기  (0) 2020.12.29
서울에서 김서방 찾기  (2) 2020.12.28

문제

문제

처음 작성한 코드

def solution(n):
    water = ['수','박']
    return ''.join([water[i%2] for i in range(n)])

 

깨달은 점

water라는 리스트의 인덱스는 0과 1뿐이기 때문에 리스트에 접근하기 위해서는 %2를 사용하면 된다.

''.join(list) 는 list를 문자열로 변환할 수 있는 코드이다.

다른 사람의 코드를 봤더니 내 코드가 simple is the best 라는 평을 받고 있었다. 햅삐~~

'Programmers' 카테고리의 다른 글

같은 숫자는 싫어  (0) 2020.12.29
나누어 떨어지는 숫자 배열  (0) 2020.12.29
문자열 내 마음대로 정렬하기  (0) 2020.12.29
서울에서 김서방 찾기  (2) 2020.12.28
가운데 글자 가져오기  (0) 2020.12.28

문제

문제

처음 작성한 코드

def solution(strings, n):
    answer = []
    a = sorted([i[n] for i in strings],reverse=False)
    strings = sorted(strings,reverse=False)
    s = [1]*len(strings)
    for i in a:
        for idx,j in enumerate(strings):
            if j[n]==i and s[idx]==1:
                answer.append(j)
                s[idx] = 0
                break
    return answer

 

코드 리뷰 후

def solution(strings, n):
    return sorted(sorted(strings), key = lambda x:x[n])

 

깨달은 점

lambda의 사용법을 알게되었다.
sorted의 key를 통해 기준점을 잡고 정렬할 수 있다는 것을 알게되었다.
lambda는 lambda parameter_list:expression 이런 식으로 쓰이는 데, 위의 문제에서는 문자열의 n번째 인덱스를 기준으로 정렬하면 되기 때문에 lambda x:x[n] 이런식으로 사용하면 된다.
어렵다..

'Programmers' 카테고리의 다른 글

나누어 떨어지는 숫자 배열  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29
서울에서 김서방 찾기  (2) 2020.12.28
가운데 글자 가져오기  (0) 2020.12.28
문자열 다루기 기본  (0) 2020.12.28

문제

문제

처음 작성한 코드

def solution(seoul):
    x = seoul.index('Kim')
    return ''.join('김서방은 '+str(x)+'에 있다')

 

코드 리뷰 후

def solution(seoul):
    return "김서방은 {}에 있다".format(seoul.index('Kim'))

 

깨달은 점

string.format()의 사용법을 알게되었다.

list.index()의 사용법을 알게되었다.

위의 경우 seoul.index('Kim') 을 하면 seoul이라는 리스트에 있는 Kim의 인덱스를 반환해준다.

'Programmers' 카테고리의 다른 글

나누어 떨어지는 숫자 배열  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29
문자열 내 마음대로 정렬하기  (0) 2020.12.29
가운데 글자 가져오기  (0) 2020.12.28
문자열 다루기 기본  (0) 2020.12.28

문제

문제

처음 작성한 코드

import math

def solution(s):
    answer = ''
    if len(s) % 2 ==0:
        answer = s[math.floor(len(s)/2)-1:math.floor(len(s)/2)+1]
    else:
        answer = s[math.floor(len(s)/2)]
    return answer

 

코드 리뷰 후

def solution(s):
    answer = ''
    answer = s[(len(s)-1)//2:len(s)//2+1]
    return answer

 

깨달은 점

나누기를 하고 int형으로 바꾸는 방법은 나눌 때 -> /가 아닌 //을 사용하는 것

짝수와 홀수의 경우를 나누지 않고 전체 길이에서 -1 하고 2를 나누면 중간이 된다는 것

 

'Programmers' 카테고리의 다른 글

나누어 떨어지는 숫자 배열  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29
문자열 내 마음대로 정렬하기  (0) 2020.12.29
서울에서 김서방 찾기  (2) 2020.12.28
문자열 다루기 기본  (0) 2020.12.28

문제

문제

처음 작성한 코드

def solution(s):
    answer = True
    a = 0
    if len(s)==4 or len(s)==6:
        for i in s:
            if i!='0' and i!='1' and i!='2' and i!='3' and i!='4' and i!='5' and i!='6' and i!='7' and i!='8' and i!='9':
                a = 1
        if a!=0:
            answer=False
    else: answer=False
    return answer

 

코드 리뷰 후

def solution(s):
    import re
    return bool(re.match('^(\d{4}|\d{6})$',s))

 

깨달은 점

정규식을 공부해야겠다.

위 문제에서 사용한 정규식은 \d{4}|\d{6} 이다.

\d는 0~9까지의 숫자를 의미한다. {4}는 4번 반복, 즉 4자리 숫자인지 혹은 6자리 숫자인지를 판별하기 위해 사용한 것이다.

파이썬의 세계는 신기하다.. 푸헹~

'Programmers' 카테고리의 다른 글

나누어 떨어지는 숫자 배열  (0) 2020.12.29
수박수박수박수박수박수?  (0) 2020.12.29
문자열 내 마음대로 정렬하기  (0) 2020.12.29
서울에서 김서방 찾기  (2) 2020.12.28
가운데 글자 가져오기  (0) 2020.12.28