Python 202

[Python] 카펫

def solution(brown, yellow): for i in range(1, int(yellow/2) + 2) : if yellow % i == 0 : width = int(yellow/i) b = i*2 + width*2 + 4 if b == brown : return [width+2, i+2] 풀이 노란색을 이용해서 테두리를 공략하는 풀이 노란색의 가로, 세로 길이를 알기만 하면 된다. 1. yellow의 약수라면, yellow를 감싸는 테두리의 갯수를 구한다. 2. 그 수가 brown과 같다면 i가 yellow의 가로가 된다. 3. yellow 가로 세로 길이에서 2를 더해 반환한다. (위 아래 그리고 양 옆을 brown이 감싸고 있으니 2씩 더한다)

[Python] 큰 수 만들기

def solution(number, k): answer = [number[0]] for num in number[1:] : while len(answer)>0 and answer[-1] 0 : answer.pop() k -= 1 answer.append(num) if k != 0 : answer = answer[:-k] return ''.join(answer) 풀이 1. answer에 값을 순서대로 삽입한다. 2. 들어오는 값이 answer에 있는 값보다 크다면 answer의 값을 빼주고 k에서 1을 빼준다. (반복) 3. k만큼 숫자를 빼주지 못했다면, 뒤에서부터 k만큼(남은 부분) 삭제해준다. * 처음에 while 대신 if를 썼었는데 그렇게 되면, test 3번 "4177..

[Python] 위장

def solution(clothes): dic = {} for i in clothes : if i[1] in dic : dic[i[1]] += 1 else : dic[i[1]] = 2 answer = 1 for j in dic.values() : answer *= j return answer -1 풀이 의상 종류를 세어 경우의 수를 구해주면 된다. 1. dic에 의상 종류에 따라 저장하고 해당 종류가 또 있다면 1을 더해준다. 2. dic에 저장된 의상 종류들의 모든 값(수)들을 곱하고 -1하여 반환한다. * 2부터 시작하고 -1하는 이유 : 의상종류가 3가지라고 가정했을 때, (a + 1)(b + 1)(c + 1) - 1 = (a + b + c) + (ab + bc + ca) + abc 다른 풀이 f..