-문제: https://www.acmicpc.net/problem/13305

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net

 

-정답풀이:

  • 지금까지 지났던 주유소의 리터아 가격 중 작은값으로 도로를 이동하는 걸 생각하면 된다
  • 따라서 주유소 가격은 지금까지의 주유소 가격보다 작을 때 갱신된다

 

 

-부분 정답풀이(내 풀이):

  • 약간 dp풀이처럼 푼 것 같기도 하다

 

-문제: https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

어렵다고 생각했는데 생각보다 쉬운 문제였다

 

-정답풀이:

  • n이 아닌 n-1을 출력하는 이유는 while문을 나올 때 n이 원래 값보다 1만큼 더 커져서 나오기 때문이다 
  • 1부터 n까지의 합을 구한 뒤, 그게 s보다 클 때 나온다
s=int(input())
n=0

while n*(n+1)//2 <= s:
    n+=1
print(n-1)

-문제: https://www.acmicpc.net/problem/10610

 

10610번: 30

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한

www.acmicpc.net

문제푸는 방법은 대충 알아냈는데 풀이를 제대로 작성하지 못함. 좀더 꼼꼼히 생각하는게 필요할 것 같다

알아낸 원리로는 30으로 나눠지려면 가장 끝자리 수가 0이 되어야하고(30은 10의 배수이므로), 마지막으로 전체 수가 3의 배수가 되어야하므로 각 자리 수의 합이 3의 배수가 되어야 한다.

-> 여기서 끝 3자리의 합만 3의 배수가 되면 된다고 생각했는데 이부분이 틀렸고, 출력하는 방법, 숫자 0이 없는 거랑 각 숫자의 합이 3의 배수가 안되는 경우도 안된다는 걸 간과했다. 

 

-정답풀이: 

 

-내 풀이(틀림):

-문제: https://www.acmicpc.net/problem/10162

 

10162번: 전자레인지

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은

www.acmicpc.net

답지 안 보고 풀었음 

 

-정답풀이: 

 

  • 이전에 동전개수 구하는 문제와 비슷한 맥락이고, 다른 점은 세가지 수로 표현이 안될때 -1 출력하는 것이었는데
  • -1이 출력되는 경우는 가장 마지막 수인 10으로 나누어지지 않을 때이다. 
  • 그래서 시작 부분에 그 부분을 확인하고 넘어가는 코드를 추가했다
n=int(input())
s=[300,60,10]
ans=[]

if n%10 !=0:
    print(-1)
else: 
    for i in s:
        if n//i !=0:
            ans.append(n//i)
            n=n%i
        else:
            ans.append(0)

for i in ans:
    print(i, end=' ')

 

- 6/26 풀이: 

 

크게 어렵지 않았던 문제. 

마지막에 print(ans)로 했다가 틀려서 고친 후 돌려봤더니 정답이 떴다. 

n=int(input())
units=[300,60,10]
ans=[0 for _ in range(3)]

for i in range(3) :
    if n // units[i] :
        ans[i] += n // units[i]
        n -= units[i]*(n//units[i])
        
if n !=0 :
    print(-1)
else:
    print(ans[0],ans[1],ans[2])

+ Recent posts