728x90

백준 코딩 4

백준 1193

#1193 x = int(input()) d = 1 # 대각선 while x > d: x -= d d += 1 if d % 2 == 0: up = x down = d - x + 1 elif d % 2 == 1: up = d - x + 1 down = x print(up,"/",down,sep="") 이 문제는 규칙을 알지만 수식으로 나타내는 것을 어떻게 해야할 지 몰라 많이 고민했던 부분이다. 결국 검색의 도움을 받아 코드를 완성했지만 다시 생각해내서 풀라고 하면 다시 오랜 고민을 할 것같은 문제이다. 수학 문제 부분은 규칙은 이해가 가지만 코드로 구현하는 부분이 너무 어렵다는 생각이 든다. 다시 봐야 할 문제 중 하나!

백준 2839

#2839 n = int(input()) answer = 0 while n >= 0: if(n % 5) == 0: answer += (n // 5) print(answer) break n -= 3 answer += 1 else: print(-1) 처음에는 이 문제를 노가다로 풀려고 했는데 줄이 너무 길어져서 다시 고민했다. 힌트를 얻기 위해 검색하던 중, 이 문제가 그리디 알고리즘이라는 것을 알게 되었다. "그리디 알고리즘"은 잔돈 거슬러 주기에서 많이 쓰이는 알고리즘이라고 한다. 코드의 풀이를 하자면, n을 입력 받은 후, n이 가장 큰 수인 5로 나누어진다면 바로 답을 구하고, 그렇지 않으면 -3을 해줌으로써, 3으로 한 번 나누어졌다고 생각할 수 있으므로 answer에는 1을 더해준다. 이런 식으로..

728x90
반응형