처음에는 그냥 하나하나 다 탐색해야 하는 건 줄 알고 가볍게 풀었다. import sys N = int(sys.stdin.readline()) A = list(map(int, sys.stdin.readline().split())) M = int(sys.stdin.readline()) B = list(map(int, sys.stdin.readline().split())) for i in range(len(B)): if B[i] in A: B[i] = 1 else: B[i] = 0 for i in B: print(i, end=' ') 쉽다쉬워~ 그런데 계속 시간초과가 뜬다. 알고리즘 뭐 쓰이는지 봤더니 이분탐색..! 주어지는 리스트의 크기가 작지 않은 이상 전체 탐색은 시간이 너무 오래 걸리는 것이었다 im..
손익분기점이 어떻게 형성되는지 하나의 식으로 나타내보면 A + nB A/(C-B) 보다 큰 자연수 주의해야 할 점은 C = B가 되어 0으로 나누는 에러가 발생하지 않도록 하는 것! import sys A, B, C = map(int, sys.stdin.readline().split()) if C != B: if A/(C - B)
뭐야 쉽네~ 하고 V에 도달할 때까지 루프 돌렸다간 달팽이가 나무에 오를때까지 끝나지 않는다..^^.. 999999901을 기다릴 수도 있다..^^ 다시 생각해보자 달팽이는 하루에 A - B 만큼 올라간다. 그리고 달팽이가 올라가야 하는 길이는 V - B 이다. (마지막에는 미끄러지지 않기 때문에 B만큼을 줄여야 한다.) 올라가야 하는 길이를 하루에 올라가는 길이로 나누고, 나머지를 본다. 나머지가 0이 아니라면 하루가 더 필요한 것이다. import sys A, B, V = map(int, sys.stdin.readline().split()) if (V - B) % (A - B) == 0: print((V - B) // (A - B)) else : print(((V - B) // (A - B)) + 1)
들어오는 정보를 나이순으로 정렬한 다음 나이가 같으면 들어온 순서대로 출력하는 문제! lambda 정렬을 이용해 풀었다 import sys N = int(input()) A = [] for i in range(N): a, b = map(str, sys.stdin.readline().split()) # 나이와 이름을 먼저 a, b에 저장하고 a = int(a) # a는 int로 변환해주고 A.append((a, b)) # A에 (a, b) 형태로 저장 A.sort(key=lambda x: (x[0])) # A안의 리스트들을 x[0] 즉 나이를 이용해 정렬해준다 for i in A: print(i[0], i[1])