본문 바로가기

전체 글

(88)
백준 20056 <마법사 상어와 파이어볼> 최근에 나온 삼성 역량 테스트 시뮬레이션 문제이다. 문제 풀이 순서 모든 파이어볼을 담을 queue를 이용해서 이동시킨다. 한자리에 모여 있는 수가 2개일 경우 결합과 분해가 일어나고 1개일 경우 바로 queue에 다시 넣어준다. K번을 수행하고 난 뒤 queue에 있는 무게를 더하면 된다. 파이어볼의 상태를 나타내기 위해 fire이라는 클래스를 선언했다. 또한 이동 후의 상태를 저장한 move 클래스를 선언했다. 파이어 볼을 이동하면서 주의해야 할 점은 이 과정을 해줘야 한다는 것이다. 파이어볼을 이동할 때 몇 개가 겹치는 지를 알아야 하기 때문에 ArrayList map [][]을 사용 또한 그것의 상태를 저장하기 위한 ArrayList al를 사용 다음 그림과 같이 처리를 한다. 그리고 모든 맵의 ..
백준 17135 <캐슬 디펜스> 조합으로 3명의 궁수를 배치하고 나서 게임을 진행하는 시뮬레이션 문제! 문제를 잘읽어보는게 포인트인 문제이다. 문제 풀이 M개중에 3개의 궁수위치를 조합으로 선택한다. 각각의 궁수 위치에서 D 이하이면서 가장 가깝고 왼쪽에 있는 적을 선택한다. 적은 한칸씩 당겨준다. 여기서 주의할 점은 같은 적을 때릴 경우가 있다는 것이다. 조합으로 궁수의 위치를 선택한다 D거리 이하중 가장 가깝고 왼쪽에 있는 것 선택!!! 그 이후 적을 죽이고 맵을 당겨오는 과정 여기서 생각해야 할 점 하나 더! 조합으로 선택한 후 적을 죽이고 맵을 당겨오는 과정이 있기 때문에 map을 복사해서 사용! 전체 코드 더보기 import java.awt.Point; import java.io.BufferedReader; import jav..
백준 19582 <200년간 폐관수련했더니 PS 최강자가 된 건에 대하여> 이 문제를 처음부터 탐색을 하면서 선택을 하던지 안 하던지를 정하는 문제이다 하지만 선택을 안 하는 경우는 딱 한가 지거나 없어야 한다는 것을 명심!! 간단하게 푸는 방법은 n개중 차례대로 하나씩을 빼면서 처음부터 탐색하는 것인데 그렇게하면 N^2이므로 시간 초과! 그래서 나는 하나를 선택하지 않은 경우와 전체를 선택한 경우 둘로 나눠서 문제를 풀어나갔다. 문제 풀이 처음 것을 택한 경우와 택하지 않은 경우로 초기화 이전의 택한 경우의 합이 제한 상금보다 작거나 같을 경우 업데이트 --> 선택한 경우 이전의 택한 경우+현재 택하지 않은 경우 VS 이전의 택하지 않은 경우 + 현재 택한 경우 -->한번 참가 안 한 경우 이렇게 두 가지로 나눠서 두가지 경우 중에 답이 있으면 "Kkeo-eok" 없으면 "Z..