1) 생각 12달 동안의 월별 수영장 이용 일 수와 1일, 1달, 3달, 12달 이용권의 가격이 주어진다. 최소한의 금액으로 수영장을 다닐 수 있겠끔 최소 금액을 출력하여라. 처음 생각DFS를 이용해서 1일 1달과 한달은 idx+1을 3달은 idx+3을 1년은 idx+12를 하여 idx가 12보다 크거나 같아지면 해당 값까지의 sum 값의 최소값을 구하였다. 다음 생각위의 방식으로는 대다수의 case는 통과하였지만 1개가 통과되지 않았다. 3달을 구할 때 무작정 더하면 안됐던 것이다. 세달 연속 이용 일 수가 모든 달이 0 0 0 이면 이용하지 않아도 되기 때문에 해당 조건을 추가해주었다. 마찬가지로 달마다의 금액도 해당 달의 이용일 수가 0보다 클 경우에만 더해주었다. 2) 방안 1) 재귀를 이용한 D..
1) 생각 n개의 숫자와 n-1개의 연산자를 줄 때 만들 수 있는 가장 큰 숫자와 가장 작은 숫자의 차이를 구하여라(연산은 무조건 앞에서 부터 진행한다.) 처음 생각맨 처음 숫자를 필두로 1개식 연사자를 바꿔가며 모든 경우를 만들어 보면 되므로 재귀로 해결하였다. 2) 방안 1) 재귀의 인자를 4개의 연사자를 다 넣을지 배열로 넣을지 고민하다 그냥 다 넣었다.2) 재귀에서 가장 중요한 점은 가지치기 이므로 idx를 벗어나지 않도록 idx의 값이 n까지 다달으면 max와 min을 갱신해주고 return 해주었다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.io.IOE..
1) 생각 배틀 필드 게임을 개발하려고 한다. 주어진 조건에 맞게 구현하여라. 처음 생각조건에 맞춰 구현을 하는 시뮬레이션 문제이다. 다음 생각기본 적인 구현을 한 뒤, LEFT RIGHT UP DOWN 방향을 알고 있어야 SHOOT을 그 방향으로 할 수 있으므로 Field 선언을 통해 항상 탱크의 방향을 갱신해주었다. 다다음 생각'Fail'이 떠서 머가 문제인지 찾기 어려웠으나 시뮬레이션은 문제가 답이므로 문제를 더 꼼꼼히 읽어본 결과 SHOOT을 하였을 때, 벽(*)을 만났을 경우 메소드를 종료시키지 않고 있었다. 2) 방안 1) SHOOT을 할 때 방향 변수에 따라서 4개의 조건으로 나뉘고 그 이후를 탐색한다. '#'을 만나면 바로 종료하고 '*'을 만나면 지도 배열을 '.'로 바꿔주고 종료한다. ..
- Total
- Today
- Yesterday