Algorithm 211

[Python] 체육복

def solution(n, lost, reserve): for i in lost[:] : if i in reserve : lost.remove(i) reserve.remove(i) for i in lost[:] : if i-1 in reserve : lost.remove(i) reserve.remove(i-1) elif i+1 in reserve : lost.remove(i) reserve.remove(i+1) return n - len(lost) 1. 처음 for문으로 lost, reserve 두 리스트에 들어가있는 학생들을 제거해준다. 2. 두번째 for문으로는 lost에 남아있는 학생의 번호 앞(먼저) 또는 뒤 번호의 학생이 체육복 여벌을 들고왔다면 lost, reseve에서 제거해준다. 3. n..

[Python] 시저 암호

def solution(s, n): result = [] for i in s : if i == " " : result.append(" ") else : ask = ord(i) + n if ask > ord("z") : ask_r = ord("a")-1 + (ask-ord("z")) result.append(chr(ask_r)) elif i.isupper() and ask > ord("Z") : ask_r = ord("A")-1 + (ask- ord("Z")) result.append(chr(ask_r)) else : result.append(chr(ask)) return ''.join(result) 문자를 아스키코드로 변형하여 n만큼 움직여준 뒤, 리스트에 추가해주는 방법 n만큼 이동한 아스키코드가 z(..

[Python] 주식가격

def solution(prices): time = [0] * len(prices) for i in range(len(prices)-1) : for j in range(i+1, len(prices)) : if prices[i] > prices[j] : time[i] += 1 break else : time[i] += 1 return time 풀이 time = [0] * len(prices) 먼저 prices 리스트의 길이만큼의 0으로 채워진 리스트를 만든다. for i in range(len(prices)-1) : for j in range(i+1, len(prices)) : if prices[i] > prices[j] : time[i] += 1 break else : time[i] += 1 1) 처음 ..

[Python] 프린터

def solution(priorities, location): answer = 0 printer = [(i, j) for i, j in enumerate(priorities)] while True : x = printer.pop(0) if any(x[1] < q[1] for q in printer) : printer.append(x) else : answer += 1 if x[0] == location : return answer 1. 입력받은 priorities를 enumerate를 이용하여 인덱스와 우선순위를 튜플로 printer 리스트 에 넣어준다. ex) priorities = [1, 2, 3, 1] 이면 printer = [(0,1), (1, 2), (2, 3), (3, 1)] 이 됨 2. p..