개발/PS 21

[Python] 프로그래머스 Lv2 타켓넘버 (DFS, BFS)

자료구조를 배우지 않고 풀었기에 깊이/너비 우선 탐색을 잘 몰라 그냥 푼 코드임으로 나중에 다시 공부할 필요가 있는 코드. (그래도 일단 풀었으니 정리해두기) 풀이 def solution(numbers, target): answer = 0 temp = [0] # 1 처음엔 0으로 시작 for i in range(0, len(numbers)): temp2 = [] for j in range(0, len(temp)): # 2 temp2.append(temp[j] + numbers[i]) temp2.append(temp[j] - numbers[i]) temp = temp2 # 3 for i in range(0, len(temp2)): # 4 if target == temp2[i]: answer += 1 ret..

개발/PS 2022.01.01

[Python] 프로그래머스 Lv2 오픈 채팅방

풀이 def solution(record): answer = [] user_data = {} for i in record: temp = i.split() command = temp[0] if command == 'Enter' or command == 'Change': user_data[temp[1]] = temp[2] for i in record: temp = i.split() command = temp[0] if command == 'Enter': answer.append(f'{user_data[temp[1]]}님이 들어왔습니다.') elif command == 'Leave': answer.append(f'{user_data[temp[1]]}님이 나갔습니다.') return answer # 1. 아이디..

개발/PS 2021.12.31

프로그래머스 Lv1 크레인 인형뽑기 게임 (파이썬)

풀이 def solution(board, moves): answer = 0 bucket = [] for i in moves: for j in board: if j[i - 1] == 0: pass else: bucket.append(j[i - 1]) j[i - 1] = 0 break if len(bucket) > 1 and (bucket[-1] == bucket[-2]): answer += 2 bucket = bucket[0:-2] return answer 2차원 배열을 slicing 해주면 되는 문제에요. 먼저 0을 만나면 그냥 지나쳐야 하는 것을 기억하고 배열에서 숫자를 뽑아 bucket에 추가하면 배열의 그 공간은 0으로 만들어 주어야 해요. (j[i-1]인 것은 moves는 1부터 시작하기 때문이에..

개발/PS 2021.12.30

프로그래머스 Lv1 숫자 문자열과 영단어(파이썬)

풀이 def solution(s): answer = 0 matching_number = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'} for num in list(matching_number.keys()): while True: if s.find(num) != -1: s = s.replace(num, matching_number.get(num)) else: break answer = int(s) return answer Dictionary에 문자와 숫자를 매칭시켜 두고 s를 검사하면서 존재하는 문자를 숫자로 바꿔주었어요..

개발/PS 2021.12.30

프로그래머스 Lv1 로또의 최고 순위와 최저 순위 (파이썬)

풀이 def solution(lottos, win_nums): answer = [] match_num = 0 max_rank = 0 min_rank = 0 pre_value = 0 for lot in lottos: if lot == 0: pre_value += 1 else: for win in win_nums: if lot == win: match_num += 1 min_rank = match_num max_rank = min_rank + pre_value ranking = {6: 1, 5: 2, 4: 3, 3: 4, 2: 5} max_rank = ranking.get(max_rank, 6) min_rank = ranking.get(min_rank, 6) answer.append(max_rank) ans..

개발/PS 2021.12.30

프로그래머스 Lv1 없는 숫자 더하기 (파이썬)

풀이 def solution(numbers): answer = 0 for i in range(0, len(numbers)): numbers[i] = str(numbers[i]) temp = ''.join(numbers) for i in range(0, 10): if temp.find(str(i)) == -1: answer += i return answer 저는 numbers list를 string으로 만들어서 하나씩 돌아가며 수를 찾고 없는 수를 answer에 더하는 방식으로 코딩했어요. 근데 다른사람의 풀이를 보면니까 어이가 없더라구요 ㅋㅋㅋㅋ number 원소를 전부 더해서 45에서 빼다니... 한줄로 가능한 문제였어요.

개발/PS 2021.12.30

프로그래머스 Lv2 문자열 압축 (파이썬) + 예외 처리

풀이 # 주석은 아래 글에서 확인 def solution(s): answer = 1000 if len(s) == 1: # 1 answer = 1 for i in range(1, (len(s) // 2) + 1): temp = s[0:i] c_str = '' count = 1 for j in range(1, 1001): if i * j > len(s): c_str += s[i * (j - 1):] # 2 break if temp == s[i * j:i * (j + 1)]: count += 1 else: if count == 1: count = 'A' # 3 c_str += str(count) + temp temp = s[i * j:i * (j + 1)] count = 1 c_str = c_str.repla..

개발/PS 2021.12.30