-
[🦩 프로그래머스] 오픈채팅방 / 나누어 떨어지는 숫자배열 / 같은 숫자는 싫어 / 체육복Algorithm/케로베로스 2020. 12. 14. 09:34반응형
프로그래머스 풀이
Q. 오픈채팅방
def solution(record): id_dict = {} # id와 닉네임 저장 dict # 아이디: 닉네임 형태로 저장한다. 최종적으로는 바뀐 닉네임이 저장되어 있음. for r in record: a = list(r.split()) if len(a) == 3: id_dict[a[1]] = a[2] # a[1]은 아이디 값 저장, enter/leave에 따라 문장 저장 result = [] for r in record: a = list(r.split()) if a[0] == 'Enter': result.append(id_dict[a[1]]+'님이 들어왔습니다.') elif a[0] == 'Leave': result.append(id_dict[a[1]]+'님이 나갔습니다.') return result
Q. 나누어 떨어지는 숫자 배열
def solution(arr, divisor): return sorted([i for i in arr if i%divisor == 0]) or [-1]
Q. 같은 숫자는 싫어
def solution(arr): answer = [arr[0]] for i in range(1, len(arr)): if arr[i] != arr[i-1]: answer.append(arr[i]) return answer
Q. 체육복
import copy def solution(n, l, reserve): lost = copy.deepcopy(l) # 단순복사로 하니까 l도 같이 변함 ㅠㅜㅜ #reseve인데 도난 당한 애들 처리 for i, v in enumerate(l): if v in reserve: reserve.remove(v) lost.remove(v) while reserve: r = reserve.pop(0) if r-1 in lost: lost.remove(r-1) elif r+1 in lost: lost.remove(r+1) return n-len(lost)
def solution(n, lost, reserve): _reserve = [r for r in reserve if r not in lost] _lost = [l for l in lost if l not in reserve] for r in _reserve: f = r - 1 b = r + 1 if f in _lost: _lost.remove(f) elif b in _lost: _lost.remove(b) return n - len(_lost)
반응형'Algorithm > 케로베로스' 카테고리의 다른 글
[🐉 백준 11단계] 브루트 포스 (0) 2020.12.21 [🐉 백준 10단계] 재귀 (0) 2020.12.21 [🐉 백준 9단계] 수학 2 (0) 2020.12.13 [🐉 백준 8단계] 수학 1 (2) 2020.12.13 [🐉 백준 7단계] 문자열 (0) 2020.12.12