본문 바로가기

CS42

[이코테] 다이나믹 프로그래밍 - 1로 만들기 정답을 봐도 이걸 내가 생각해낼 수 있었을까 의문이 드는... 점화식 세워보는 걸 좀 연습해야 하나 싶기도 하고 1. 내 풀이 d = [0] * 30000 x = int(input()) def cal_cnt(x): if x == 1: return None elif x % 5 == 0: x //= 5 d[x] = 1 return cal_cnt(x) elif x % 3 == 0: x //= 3 d[x] = 1 return cal_cnt(x) elif x % 2 == 0: x //= 2 d[x] = 1 return cal_cnt(x) elif (x % 5 != 0) and (x % 3 != 0) and (x % 2 != 0): x -= 1 d[x] = 1 return cal_cnt(x) cal_cnt(x) p.. 2023. 2. 21.
[이코테] 실패율 뭔가 알 것 같은데 못 푸는 느낌 1. 내 풀이 ㅋㅋㅋㅋ 그냥 못 푼 풀이 def solution(N, stages): count_sort = [0] * (N+1) for i in range(0, stages): stages[0] tmp = sorted(stages) for i in range(1, N+1): answer = [] return answer 1-1. 풀이 도중 생각 1) 실패율 = (해당 스테이지에 머물러 있는 사람) / (해당 스테이지에 있는 사람 + 그 이상에 있는 사람) 2) 스테이지를 인덱스로 가지는 계수 정렬이 필요하려나? 3) 낮은 순으로 정렬한 다음에 분수 계산 하면 될 것 같은데 그걸 어떻게 해야는지 감이 안 잡히네 2. 정답 Hr.... count()라는 함수가 있는지 알았.. 2023. 2. 12.
[이코테] 정렬 - 안테나 ㅋㅋㅋㅋㅋㅋ 정답 보니까 진짜 허무해지는 문제... 1. 내 풀이 n = int(input()) data = list(map(int, input().split())) distance = {} for i in range(n): tmp = 0 for j in range(0, n, -1): if j == 0: tmp += abs(data[i] - data[j]) distance[tmp] = i else: tmp += abs(data[i]-data[j]) keys = list(distance.keys()) keys.sort() print(distance[keys[0]]) 1-1. 풀이 도중 생각 1) 계수 정렬로 하기에는 공백이 너무 많이 생길 것 같은데? 2) 거리를 다 구해서 각 집 위치를 키를 가지는 딕셔.. 2023. 2. 12.
[이코테] 정렬 - 국영수 1. 내 풀이 n = int(input()) data = [] for i in range(n): data.append((input().split())) data = sorted(data, key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0])) for i in range(n): print(data[i][0], end='\n') 다시보니 input().split()를 다시 한 번 ()로 묶어줄 필요가 없었는데 저렇게 했네 for i in range에서도 i를 쓰지 않으니까 _로 처리 가능했기도 하고 굳이 end='\n'이 아니더라도 그냥 했어도 됐는데,,, end=' ' 이거 의식하다가 저렇게 쓴듯 1-1. 풀이 도중 생각 1) sort(key=lambda)쓰면.. 2023. 2. 11.