https://www.acmicpc.net/problem/16283
[알고리즘]
백준 사이트에서 알고리즘 문제를 풀고 나면 다른 사람이 쓴 코드를 항상 확인해보는데, kocc10님의 코드에 배울 점이 많아서 포스팅 해본다.
[내가 쓴 코드]
a, v, n, w = map(int, input().split())
ans = []
for i in range(n) :
for j in range(n) :
if a*i + v*j == w and i+j == n :
ans.append((i,j))
if len(ans) == 1 :
print(*ans[0])
else:
print(-1)
[kocc10님이 쓴 코드]
a, b, n, w = map(int, input().split())
cnt = 0
for i in range(1, n):
A = i
B = n - i
if A * a + B * b == w:
s = A
g = B
cnt += 1
if cnt == 1:
print(s, g)
else:
print(-1)
[알게된 점]
- 양과 염소의 합이 n이니까 굳이 이중 for문으로 하나씩 증가하며 확인하는 것이 아니라, 인덱스를 양 = i, 염소 = n-i로 설정한다.
- 조금만 더 생각하면 과도한 반복문 사용을 줄일 수 있다.(연습 많이 하면서 알아가기 연습 많이 하기)
- 간단한 문제는 배열에 저장하지 않고 변수에 저장하여 메모리를 덜 사용할 수 있다.
- 나는 문제해결을 위해 항상 배열을 우선적으로 고려해보는 고질병이 있다. 의식적으로 연습을 하면서 고쳐나가자
- 이 문제는 답이 여러개인 경우 아예 -1을 처리해버리기 때문에 꼭 배열을 쓰지 않아도 된다.
'PS > BOJ&Programmers' 카테고리의 다른 글
[백준/17202] 핸드폰 번호 궁합 | 배열을 통해서 연산 갱신하기 |011223.. 인덱싱 (0) | 2023.03.19 |
---|---|
[백준/18111] 마인크래프트 (1) | 2023.03.12 |
[백준/2961] 도영이가 만든 음식 | 브루트포스의 구조(조합) | 곱셈 누적 초기화는 1 | 디버깅을 열심히 하자. 내가 짠 코드를 파악하는 방법 (0) | 2023.03.05 |
[백준/1260] DFS와 BFS | 인접 리스트에 그래프 저장하기 (0) | 2023.03.01 |
[백준/3184] 양 | 그래프 영역 구별 하기 (2) | 2023.02.28 |