📖 문제 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 💡 풀이 방식 • 구현, 시뮬레이션 필요 자료구조 - 파이어볼 이동 시 정보 (2차원 ArrayList 배열 !!) - 모든 파이어볼 정보 저장할 ArrayList 1. 파이어볼 정보 저장용 리스트에 파이어볼 정보를 저장한다. 2. K번 이동시키고, 파이어볼을 분열시킨다. 2-1) [파이어볼 이동] 반복문을 통해 리스트에 있는 파이어볼들의 위치를 이동시키고, 파이어볼 이동 시 정보를 나타내는 2차원 리스트 배열 ma..
구현
📖 문제 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 💡 풀이 방식 • 구현, 시뮬레이션 문제에 주어진 조건 그대로 구현하면 된다. 필요 자료구조 - 8방향 저장 dx/dy 배열 - 구름인 적 있었는지 나타내는 boolean형 방문 표시 배열 - 구름 위치 저장용 큐 💥 유의사항 1단계, 구름을 이동시키는 단계에서는 배열의 행과 열의 끝끼리 연결되어 있게 해야 한다. 이 때 인덱스에 유의해야 한다. c[0] = (N + c[0] + dx[d] * (s % N)) % N; c[1] = (N + c[1]..
📖 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 풀이 방식 • 구현, 시뮬레이션 1. 시작점 위치 S를 저장한다. 2. routes 배열을 돌면서 격자 범위를 벗어나지 않고, 장애물 X가 아니면 이동시킨다. 💥 유의사항 - 현재 있는 위치의 행과 열 위치를 옮기는 것이 아니고, 이 값을 복사한 임시변수를 이동시켜본다. - 한 번에 n칸 바로 이동시키는 게 아니고, 1부터 n까지 이동시켜보면서 n 칸 옆으로 이동시킬 수 있으면 (flag == true) 임시변수의 값을 현재 위치의 값으로 저장하는 것이다,, 🔺 코드 1 2 3 4 5 6 7 8 ..
📖 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 풀이 방식 • 구현, 정렬 1. data 배열을 정렬한다. - (col-1)번째 컬럼 값이 동일하면, 첫 번째 컬럼 값 기준 내림차순 정렬 - 다르면, (col-1)번째 컬럼 값 기준 오름차순 정렬 2. (row_start - 1) ~ (row_end - 1)번째 행에 대해 아래와 같이 진행한다. - i 번째 행에 대한 합인 S_i을 누적해 더하며 구한다. (sum += data[i][j] % (i + 1)) - 그리고 나서 answer과 S_i 값을 XOR 연산한다. 💥 유의사항 문제에서는 인덱..
📖 문제 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 💡 풀이 방식 • 구현, 시뮬레이션 필요 자료구조 - 컨베이어 벨트 칸의 내구도 저장용 1차원 int형 배열 (크기 : 2 * N) - 해당 칸에 로봇 존재 여부 저장할 1차원 boolean형 배열 (※ 크기 : N) → true : 로봇 O, false : 로봇 X 내구도가 0인 칸의 개수가 K개 미만인 동안 아래 3단계를 반복한다. 1. 컨베이어 벨트와 로봇 위치를 한 칸 이동한다. // 컨베이어 벨트 이동 int tmp = A[..
📖 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 풀이 방식 • 구현, 문자열 1. 문자열 배열 board를 돌며 O 갯수와 X 갯수를 구한다. 2. 규칙을 위반하는지 검사한다. 1) X 갯수가 O 갯수보다 많을 수 없으므로 규칙 위반 2) O 갯수 > X 갯수 + 1 일 수 없으므로 규칙 위반 3) O로 빙고가 완성되었을 때 O 갯수 = X 갯수면 규칙 위반 (끝났는데 종료되지 않았기 때문) 4) X로 빙고가 완성되었을 때 O 갯수 = X 갯수 + 1이면 규칙 위반 (끝났는데 종료되지 않았기 때문) 🔺 코드 1 2 3 4 5 6 7 8 9 10..
📖 문제 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net 💡 풀이 방식 • 구현, 시뮬레이션, BFS 필요 자료구조 - 4방 탐색용 dx/dy 배열 - 땅에 붙어있는 클러스터 위치 저장용 큐 (bfs 수행) - 땅에 붙어있는 클러스터 표시할 방문 표시 배열 - 공중에 떠있는 미네랄 위치 저장용 리스트 1. 왼쪽, 오른쪽 번갈아가며 주어진 높이의 미네랄을 파괴한다. private static void solve(int row, int i) { if(i % 2 == 0) { // 왼 > 오 for(int j = 0 ; j < ..
📖 문제 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 💡 풀이 방식 • 구현, 시뮬레이션, BFS 필요 자료구조 - 4방향 탐색용 배열 - 외부 공기와 접촉한 수 저장용 2차원 int형 배열 air (-1: 외부 공기) - 치즈 수 1. 가장자리는 무조건 공기이므로 (0,0)부터 BFS를 수행해 가장자리(-1)를 표시한다. 2. 치즈(=값이 1)인 곳에서 상하좌우 中 외부 공기(=값이 -1) 갯수를 센다. 3. 외부 공기와 2개 이상 접하면 치즈를 녹인다. 4. 치즈 갯수가 0개가 될 때까지 ..
📖 문제 7682번: 틱택토 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입 www.acmicpc.net 💡 풀이 방식 • 구현 X의 갯수가 더 크다면, X가 이겨야한다.(X가 먼저 시작하기 때문) X의 갯수와 O의 갯수가 같다면, O가 이기는 것이다.(X가 먼저 시작하므로) 🔺 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52..