๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/64061
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์์ฝ
N*N `board`์ ์ฌ๋ฌ ๋ชจ์์ ์ธํ(1*1)์ด ์์ฌ์๋ ์ํ์ด๊ณ , ํฌ๋ ์ธ์ ๊ฐ ์ค์ ๊ฐ์ฅ ์์ ์๋ ์ธํ์ ์ง์ด ์ฌ๋ฆฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ง์ด ์ฌ๋ฆฐ ์ธํ์ ํ ์ค ๋ฐ๊ตฌ๋์ ์์ ์ฌ๋ฆด ๋, ๊ฐ์ ๋ชจ์์ ์ธํ์ด ์ฐ์ํด์ ์์ด๋ฉด ์ด ๋ ์ธํ์ ์์ด์ง๋ค.
2์ฐจ์ ๋ฐฐ์ด `board`์ ์ธํ์ ์ง๊ธฐ ์ํด ํฌ๋ ์ธ์ ์๋์ํจ ์์น๊ฐ ๋ด๊ธด ๋ฐฐ์ด `moves`๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํฌ๋ ์ธ์ ๋ชจ๋ ์๋์ํจ ํ ์ฌ๋ผ์ง ์ธํ์ ๊ฐ์๋ฅผ ๋ฐํํ๊ธฐ
์ ํ
- `board` ๋ฐฐ์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก ํฌ๊ธฐ๋ "5 x 5" ์ด์ "30 x 30" ์ดํ์ ๋๋ค.
- `board`์ ๊ฐ ์นธ์๋ 0 ์ด์ 100 ์ดํ์ธ ์ ์๊ฐ ๋ด๊ฒจ์์ต๋๋ค.
- 0์ ๋น์นธ์ ๋ํ๋ ๋๋ค.
- 1 ~ 100์ ๊ฐ ์ซ์๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ธํ์ ๋ชจ์์ ์๋ฏธํ๋ฉฐ ๊ฐ์ ์ซ์๋ ๊ฐ์ ๋ชจ์์ ์ธํ์ ๋ํ๋ ๋๋ค.
- `moves` ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- `moves` ๋ฐฐ์ด ๊ฐ ์์๋ค์ ๊ฐ์ 1 ์ด์์ด๋ฉฐ board ๋ฐฐ์ด์ ๊ฐ๋ก ํฌ๊ธฐ ์ดํ์ธ ์์ฐ์์ ๋๋ค.
ํ์ด
๋ฐ๊ตฌ๋๋ ์ธํ์ ์ง์ด๋ฃ๊ณ , ์กฐ๊ฑด ๋ง์กฑ ์ ์์์๋ถํฐ ์ธํ์ด ์์ด์ง๊ธฐ ๋๋ฌธ์ ์คํ ํํ๋ฅผ ๋ ์ฌ๋ฆด ์ ์์ต๋๋ค.
- `moves`์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
- `board`์์ ํด๋น ์์น์ ๋งจ ์๋ถํฐ ์ธํ์ด ๋ด๊ฒจ์๋์ง ํ์ธํฉ๋๋ค.
- ๋ง์ฝ ๊ฐ์ด 0์ด๋ผ๋ฉด, ๋น์นธ์ด๋ฏ๋ก ํ ์นธ ์๋๋ก ๋ด๋ ค๊ฐ๋๋ค.
- ๋ง์ฝ ์ธํ์ด ์๋ ์์น๋งํผ ๋ด๋ ค์์ผ๋ฉด, ์ธํ์ ๋ฝ์๋ค๋ ์๋ฏธ๋ก ํด๋น ์์น๋ฅผ ๋น์นธ(0)์ผ๋ก ํ์ํฉ๋๋ค.
- ํ์ฌ ๋ฐ๊ตฌ๋์ ๋งจ ์ ์ธํ๊ณผ ์๋ก ๋ฝ์ ์ธํ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด, ๋ ์ธํ์ ๋ชจ๋ ์ฌ๋ผ์ง๋๋ค.
- ๋ฐ๊ตฌ๋์ ๋งจ ์ ์ธํ์ ์ ์ธ์ํค๊ณ , ์ฌ๋ผ์ง ์ธํ์ ๊ฐ์๋ฅผ 2 ๊ฐ์์ํจ๋ค.
- `moves`์ ๋ด๊ธด ๋ชจ๋ ๊ฐ์ ๋ํด 2~4 ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ฃผ์ํ ์ ์ `moves`์ ๋ค์ด์๋ ๊ฐ์ ์ธ๋ฑ์ค๊ฐ ์๋๋๋ค! ๋ฐ๋ผ์ -1์ ํด์ค์ 0๋ถํฐ ์์ํ๊ฒ ์ธ๋ฑ์ฑ ํด์ค์ผ ํฉ๋๋ค.
์ฝ๋
import java.util.*;
class Solution {
public int solution(int[][] board, int[] moves) {
Stack<Integer> bucket = new Stack<>();
int cnt=0;
for(int i=0; i<moves.length; i++){
for(int j=0; j<board.length; j++){
int temp = board[j][moves[i]-1];
if(temp!=0){
board[j][moves[i]-1] = 0;
if(!bucket.isEmpty() && bucket.peek()==temp){
bucket.pop();
cnt+=2;
} else{
bucket.push(temp);
}
break;
}
}
}
return cnt;
}
}
๐ท ์๊ฐ ๋ณต์ก๋
- `M`: moves์ ๊ธธ์ด
- `N`: board์ ๊ฐ๋ก ํฌ๊ธฐ
- ์ด์ค for๋ฌธ: `O(M*N)`
- ์ต์ข ์๊ฐ ๋ณต์ก๋: `O(M*N)`
๐ท ์คํ ์๋
Time: 1.29 ms, Memory: 76.3 MB
'๐ช Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [BOJ/๋ฐฑ์ค] 2573 ๋น์ฐ (JAVA) (1) | 2025.02.09 |
|---|---|
| [BOJ/๋ฐฑ์ค] 4963. ์ฌ์ ๊ฐ์ (JAVA) (1) | 2025.02.07 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ ๊ฐ๊ฒฉ (JAVA) (2) | 2025.02.05 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (JAVA) (1) | 2025.02.04 |