전체 글 26

[프로그래머스 Lv2] 예상 대진표 (Python)

def solution(n, a, b): round = 1 while (True) : if a % 2 == 1 : a += 1 if b % 2 == 1 : b += 1 if a == b : break a //= 2 b //= 2 round += 1 return round 그냥 노트에 낙서하면서 아무 생각없이 코드 친 건데 얼떨결에 통과돼서 ????/!/?????!!!?? 함 일단 A 랑 B 랑 어느 라운드에서 만나는지만 알면 되고, A, B 이외에는 누가 이기던지 상관없기 때문에 무조건 짝수 번호가 올라온다고 가정하고 풀었다 그래서 A 랑 B 도 동일하게 홀수 번호이면 +1 해서 짝수 번호로 만들어줬고, 만약 A, B 둘 중에 누구 하나 +1 했는데 같은 번호가 된다는 건 결국 해당 라운드에서 경기하게 ..

알고리즘 2022.07.27

[프로그래머스 Lv1] 소수 만들기 (Python)

def solution(nums): answer = 0 li = set() for i in range(len(nums)-2) : for j in range(i+1, len(nums)-1) : for k in range(j+1, len(nums)) : li.add(nums[i] + nums[j] + nums[k]) li = list(li) li.sort(reverse=True) for idx in li : cnt = 0 for i in range(idx-1, 1, -1) : if idx % i == 0 : cnt += 1 break if cnt == 0 : answer += 1 return answer ?? 분명 테케는 다 맞았잔ㅎ아.... 왜 배신해 라며 한참 헤매다가 드디어 틀렸던 이유를 알아냄 "nu..

알고리즘 2022.07.06

[프로그래머스 Lv1] 예산 (Python)

def solution(d, budget): answer = 0 d.sort() cnt = 1 now = d[0] for i in d[1:] : if now + i > budget : break else : cnt += 1 now += i return cnt 실행했더니 테스트 케이스 하나가 실패라고 떴다 ,, 임의로 테케 몇 개 집어넣어서 돌려보다가 드디어 발견함 생각해보니까 초기값을 1로 주면 안 됐음 ㅎㅎ budget 이 제일 작은 금액보다 더 작을 수도 있기 때문에 ,, def solution(d, budget): answer = 0 d.sort() cnt = 0 now = 0 for i in d : if now + i > budget : break else : cnt += 1 now += i re..

알고리즘 2022.07.02

[프로그래머스 Lv2] 카펫 (Python)

def solution(brown, yellow): total = brown + yellow num = [] idx = 3 while (True) : if total % idx == 0 : if idx > total // idx : break num.append([total // idx, idx]) idx += 1 for n in num : temp = (n[0]-2)*2 + n[1]*2 if temp == brown : return [n[0], n[1]] break 그냥 로직만 잘 짜면 금방 해결할 수 있는 문제였다 일단 (brown + yellow) 의 약수를 구해주는데, 1과 2는 가로/세로 길이가 될 수 없기 때문에 애초에 idx 를 3으로 초기화시켜줌. 그리고 가로 길이가 세로 길이보다 더 커야..

알고리즘 2022.07.02

[프로그래머스 Lv2 - 2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 (Python)

def solution(record): li = dict() answer = [] sen = [] for i, rec in enumerate(record) : rec = rec.split() op = rec[0] id = rec[1] if op == "Enter" : name = rec[2] if id in li.keys() : if li[id] != name : idx = [i for i, x in enumerate(sen) if x[0] == id] for i in idx : sen[i][1] = name li[id] = name sen.append([id, name, 1]) elif op == 'Leave' : name = li[id] sen.append([id, name, 2]) else : na..

알고리즘 2022.07.02

[프로그래머스 Lv1 - 2018 KAKAO BLIND RECRUITMENT] 다트 게임 (Python)

def solution(dartResult): answer = 0 count = [] option = [i for i, x in enumerate(dartResult) if x in ['*', '#']] bonus = [i for i, x in enumerate(dartResult) if x in ['S', 'D', 'T']] for idx in bonus : try : temp = int(dartResult[idx-2:idx]) if dartResult[idx] == 'D' : count.append(10 ** 2) elif dartResult[idx] == 'T' : count.append(10 ** 3) else : count.append(10) except Exception as e: # prin..

알고리즘 2022.07.01

[프로그래머스 Lv1 - 2018 KAKAO BLIND RECRUITMENT] 비밀지도 (Python)

def solution(n, arr1, arr2): answer = [] n_arr1 = [] n_arr2 = [] for i in range(n) : b = bin(arr1[i])[2:] while (True) : if len(b) == n : break else : b = '0' + b n_arr1.append(b) for i in range(n) : b = bin(arr2[i])[2:] while (True) : if len(b) == n : break else : b = '0' + b n_arr2.append(b) for i in range(n) : temp = '' for k in range(n) : if (n_arr1[i][k] == n_arr2[i][k]) and n_arr1[i][k] ==..

알고리즘 2022.07.01

[프로그래머스 Lv1 - 2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 (Python)

def solution(board, moves): answer = 0 box = [] li = [[0]*len(board[0]) for _ in range(len(board))] # 열별로 나열 for i in range(len(board[0])) : for k in range(len(board)) : li[i][k] = board[k][i] for move in moves : while (li[move-1][0] == 0) : li[move-1].pop(0) if len(box) >= 1 and box[-1] == li[move-1][0] : del box[-1] del li[move-1][0] answer += 2 else : box.append(li[move-1][0]) del li[move-1][..

알고리즘 2022.06.30