728x90

백준코딩 14

백준 4344

#4344 test_case = int(input()) for i in range(test_case): score = list(map(int,input().split())) sum = 0 new = [] for j in score[1:]: sum += j avg = sum/score[0] for j in score[1:]: if avg < j: new.append(j) result = len(new)/score[0]*100 print("{:.3f}".format(result),"%",sep='') 처음에 avg비교 전에 for j~ 부분을 안쓰고 했더니 계속 완전 다른 값이 나왔다. 이유를 아무리 봐도 모르겠었다가 다시 더 추가했더니 돌아간다... 복잡해증말!

백준 2775

#2775 t = int(input()) # test case for i in range(t): k = int(input()) # 층 n = int(input()) # 호 f0 = [x for x in range(1,n+1)] for j in range(k): for k in range(1,n): f0[k] += f0[k-1] print(f0[-1]) t는 test case, k,n은 각각 층과 호수라고 할 때, 손으로 직접 계산한다면 다음과 같다. 1호 2호 3호 0층 1 2 3 1층 1 3(1+2) 5(2+3) 2층 1 4 8 3층 1 5 12 위의 표처럼 만들어질 수 있도록 f0 list를 만들어준다. 그 후 층수에 대한 호수만큼 for문을 돌려 k층일 때, (k-1)층의 n의 호수만큼 더해준다. ..

백준 2869

#2869 a,b,v = map(int, input().split()) # x : 걸리는 일이라고 한다면, (x-1)까지 a-b만큼 올라갈 것이고 마지막 날은 a만큼만 올라간다. # 그러므로 (x-1)(a-b) + a >= v # 따라서 x에 관한 식은 : (v-a)/(a-b) + 1 # 소수는 모두 올림해야한다. import math count = math.ceil((v-a)/(a-b)) + 1 print(count) . . . 나는 단순하게 처음부터 더하고 빼고 그날을 세어 결과를 만들었다. 그렇게 하였더니 예제 3이 제 값이 나오지 않았다. 차근차근 다시 생각하고 힌트를 얻은 후 다시 작성하였더니 짧고 간결하게 나왔다. 항상 생각하지만 코드 하나 구현하는데 참 많은 생각과 시간이 필요하다.

728x90
반응형