Python/Programmers 16

[Lv2. 전화번호 목록] 풀이 기록

처음 제출한 답def solution(phone_book): phone_book = sorted(phone_book, key=lambda x:x) p_book = phone_book.copy() for p in phone_book: del p_book[0] for p2 in p_book: if p in p2: return False return True 리스트가 주어지고 특정 인덱스가 다른 인덱스의 접두사가 되는 경우를 찾는 건데최대 길이가 1,000,000 이다보니 for문을 두번 돌리면서 풀면 시간초과가 난다그리고 점수도 83.3점이라 제대로 맞히지도 못했다.. 그래서 하루동안 머리를 싸매다가 제미나이..

Python/Programmers 2026.02.04

[Lv1. 신고 결과 받기] 풀이 기록

처음 제출한 답뭔가 딕셔너리로 풀어야 될 거 같은데 잘 안떠올라서 for문 덕지덕지로 일단 해결def solution(id_list, report, k): answer = [] matrix = [[0] * len(id_list) for _ in range(len(id_list))] report_count = dict() id_list_len = len(id_list) for i in range(id_list_len): report_count[id_list[i]] = 0 for r in report: reporter, bad_man = r.split(" ") r_index = id_list.index(reporter) b_i..

Python/Programmers 2026.01.20

Lv.1-약수의 개수와 덧셈

문제 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 내 코드 def find(n): cnt = 0 for w in range(2, n+1): if n % w == 0: cnt += 1 return cnt def solution(left, right): result = 0 for n in range(left, right+1): if find(n) % 2 == 1: result += n else: result -= n return result 문제 풀이 find() -> n을 2 이상의 수로 나누었을 때 나머지가 0인 개수를..

Python/Programmers 2021.07.10

Lv.1-숫자 문자열과 영단어

문제 문자와 숫자가 섞여있는 문자열 s가 주어질 때 문자는 숫자로 변환돼있는 값 s를 return 하시오. ex) one23seven -> 1237 내 코드 def solution(s): arr = { 'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9' } for w in arr: if w in s: s = s.replace(w, arr[w]) return int(s) 문제 풀이 알파벳과 그에 해당하는 숫자가 mapping된 dict 배열을 만들어놓은 후, 일치하는 key 값이 s 배열에 있다면 해당하는 value로 치환한다.

Python/Programmers 2021.07.08

Lv.1-키패드 누르기

문제 1 2 3 4 5 6 7 8 9 * 0 # 위와 같은 키패드가 주어진다. 0 ~ 9 까지의 숫자가 담긴 배열 numbers가 주어지고, 1, 4, 7은 왼손으로, 3, 6, 9는 오른손으로 키패드를 누른다고 가정한다. 2, 5, 8, 0은 더 가까운 손가락으로 누르고 거리가 같다면 왼손잡이는 왼손, 오른손잡이는 오른손으로 누른다. 번호를 다 눌렀을 때 눌렸던 손가락의 순서를 return 하시오. 내 코드 matrix = [[0]*3]*4 matrix = [ [1,2,3], [4,5,6], [7,8,9], ['*',0,'#'] ] def find_position(n): ny, nx = 0, 0 for y in range(0, 4): for x in range(0, 3): if matrix[y][x] ..

Python/Programmers 2021.07.08

Lv.1-크레인 인형뽑기

문제 인형의 위치가 놓인 배열 board와 인형뽑기 기계가 내려갈 위치가 적힌 moves 배열이 주어진다. 0이 아닌 위치를 집으면 이 숫자는 bucket에 담긴다. 한번 집은 자리는 0이 된다. bucket의 숫자는 바닥부터 저장되며 같은 수가 만나게 되면 사라진다. 사라진 인형의 개수를 return 하시오. 내 코드 def solution(board, moves): bucket= [] board_len = len(board) i = 0 cnt = 0 for y in moves: for x in range(board_len): if board[x][y-1] != 0: bucket.append(board[x][y-1]) board[x][y-1] = 0 i += 1 break if i > 1 and buc..

Python/Programmers 2021.07.07

Lv.1-모의고사

문제 1번 수포자는 1,2,3,4,5,1,2,3,4,5 .... 2번 수포자는 2,1,2,3,2,4,2,5,2,1,2,3,2,4,2,5,.... 3번 수포자는 3,3,1,1,2,2,4,4,5,5,.... answer 배열이 주어질 때 가장 많이 맞힌 학생을 return해라. 내 코드 def solution(answers): cycles = { 1:[1,2,3,4,5], 2:[2,1,2,3,2,4,2,5], 3:[3,3,1,1,2,2,4,4,5,5] } correct = { 1:0, 2:0, 3:0 } i1, i2, i3 = 0, 0, 0 answer_len = len(answers) for i in range(answer_len): if i1 == 5: i1 = 0 if i2 == 8: i2 = 0 if..

Python/Programmers 2021.07.07

Lv.1-체육복

문제 전체 학생 수 n, 도난당한 학생 lost, 여분을 가지고 온 학생 reserve 배열이 주어진다. 여분을 가지고 온 학생은 자기 번호의 +1, -1의 학생에게 빌려줄 수 있다. 최대한 많이 수업을 참여할 수 있는 학생의 수를 return 하시오. ✅ 여분을 가지고 온 학생 또한 도난당할 수 있다. 내 코드 def solution(n, lost, reserve): #여분이 있지만 도난당한 학생 reser_lost=set(lost)&set(reserve) tmp=[] cnt=0 for i in list(reser_lost): lost.remove(i) reserve.remove(i) normal = n - len(lost) - len(reserve) for i in reserve: if i-1 in ..

Python/Programmers 2021.07.07

Lv.1-로또의 최고 순위와 최저 순위

문제 내 로또 번호 6자리와 당첨 번호 6자리의 두 배열이 주어진다. 내 로또 번호엔 0이 있을 수도 있으며 이는 최고 순위, 최저 순위에 따라 당첨 번호로 변경될 수도 있다. ex) [0,0,0,0,0,0] [1,2,3,4,5,6]이 주어지면 최고 순위는 1등, 최저 순위는 6등 내 코드 def solution(lottos, win_nums): same=set(win_nums)-set(lottos) min = len(lottos)-len(same) #원래 맞은 숫자 if min == 6: #애초에 1등 return [1,1] max = min for i in range(len(lottos)): if min == 6: return [1,1] if lottos[i] == 0: max += 1 if min ..

Python/Programmers 2021.07.07