[BOJ 20056] 마법사 상어와 파이어볼
파이어 볼이 이동하고, 조건에 따라 합쳐진 후 분리 된다. 조건 파이어 볼은 위치(r,c), 질량(m), 속도(s), 방향(d)를 가진다. 방향은 0,1,2,3,4,5,6,7 8 방향으로 구성된다. 1. 파이어볼른 방향으로 속도만큼 이동 2. 파이어볼이 2개 이상인 지점이 있으면 합쳐진 후 분리된다. 같은 칸에 있는 파이어볼은 모두 하나로 합쳐진다. 파이어볼은 4개의 파이어볼로 나누어진다. 나누어진 파이어볼의 질량, 속력, 방향은 다음과 같다. 질량은 ⌊(합쳐진 파이어볼 질량의 합)/5⌋이다. 속력은 ⌊(합쳐진 파이어볼 속력의 합)/(합쳐진 파이어볼의 개수)⌋이다. 합쳐지는 파이어볼의 방향이 모두 홀수이거나 모두 짝수이면, 방향은 0, 2, 4, 6이 되고, 그렇지 않으면 1, 3, 5, 7이 된다. 질..
더보기
[BOJ 15990] 1, 2, 3 더하기 5
1,2,3으로 만들 수 있는 숫자의 조합 이전의 값을 참조하기 때문에 DP를 사용하여 문제를 풀었다. 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 3가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 단, 같은 수를 두 번 이상 연속해서 사용하면 안 된다. 1+2+1 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 조건 연속으로 오는 숫자는 불가능 (ex : 1+1+1) 1개 이상의 숫자를 사용 1,000,000,009로 나눈 나머지를 출력 끝나는 숫자가 1인경우, 2인경우, 3인경우를 카운트하여 미리 저장하여 놓는다. 1 == x 2 == y 3 == z dp[N] = x, y, z dp[1] = 1, 0, 0..
더보기
괄호 회전하기
괄호를 쉬프트하면서 완전한 괄호 인지 확인 조건 [,],(,),{,} 만 존재 페어로 이루어져야 완전한 괄호이다. 0. [ == 1 , ] == 2, ( == 3, ) == 4, { == 5, } == 6 문자열을 치환한다. 1.문자열을 쉬프트 하는 함수를 만든다. - 처음에는 오리지날 문자열을 가지고 있으면서 쉬프트 함수를 계속하여 만들어 보았다. - 두번째로는 substring을 사용하였는데 시간이 조금 줄긴하였다. (20~30ms) 2. 탐색을 하면서 list가 비었으면 list에 넣어준다. list안에 값이 존재하면, list의 마지막과 add하려는 값의 차이가 1이면 완전한 괄호로 판단한다. import java.util.ArrayList; import java.util.List; //https..
더보기
방문길이
지나간 거리 횟수 체크 조건 -5 ~ 5의 맵을 탐색 지나갔던 거리는 횟수로 판단하지 않음 지나간 거리를 visit배열로 처리해서 중복을 방지 (0,0) -> (1,0) == (1,0) -> (0,0)은 동일한 경로이기 때문에 visit배열을 4차원으로 만들어서 판단해줌 public class Solution { int[] dx = {-1,0,1,0}; int[] dy = {0,1,0,-1}; public int solution(String dirs) { int answer = 0; int arr[][] = new int[11][11]; int visit[][][][] = new int[11][11][11][11]; int x = 5; int y = 5; for(int i=0; i
더보기