๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/15558)
< ์ ํ ๊ฒ์ >
๋ฌธ์ ํ์ด
bfs๋ฅผ ํ์ฉํ๋ฉฐ ์กฐ๊ฑด์ ์ ์ค์ ํด ์ค์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
- my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class _15558_ { // ์ ํ ๊ฒ์
static int arr[][], n, k;
static boolean visited[][], flag;
public static void main(String[] args) throws IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(bf.readLine());
n=Integer.parseInt(st.nextToken());
k=Integer.parseInt(st.nextToken());
arr=new int[2][n];
visited=new boolean[2][n];
flag=false;
String str=bf.readLine();
String str2=bf.readLine();
for(int i=0; i<n; i++) {
arr[0][i]=str.charAt(i)-'0';
if(arr[0][i]==0) visited[0][i]=true;
arr[1][i]=str2.charAt(i)-'0';
if(arr[1][i]==0) visited[1][i]=true;
}
search(0,0, 0);
if(flag) System.out.println(1);
else System.out.println(0);
}
private static void search(int x , int y, int i) {
Queue<int[]>queue=new LinkedList<>();
queue.add(new int [] {x,y,i});
visited[0][0]=true;
while(!queue.isEmpty()) {
int[] temp=queue.poll();
if(temp[1]+1 > n || temp[1]+k >= n) { // ์ข
๋ฃ ์กฐ๊ฑด
flag=true;
break;
}
if(!visited[temp[0]][temp[1]+1]) { // ํ ์นธ ์ ์ด๋
visited[temp[0]][temp[1]+1]=true;
queue.add(new int[] {temp[0], temp[1]+1, temp[2]+1});
}
if(temp[1]-1>=0 && !visited[temp[0]][temp[1]-1] && temp[1]-1>temp[2]) { // ํ ์นธ ๋ค๋ก ์ด๋
visited[temp[0]][temp[1]-1]=true;
queue.add(new int[] {temp[0], temp[1]-1, temp[2]+1});
}
// ๋ฐ๋ํธ ์ค๋ก ์ ํ
if(temp[0]==0) {
if(!visited[1][temp[1]+k]) {
visited[1][temp[1]+k]=true;
queue.add(new int[] {1,temp[1]+k, temp[2]+1});
}
}else if(temp[0]==1) {
if(!visited[0][temp[1]+k]) {
visited[0][temp[1]+k]=true;
queue.add(new int[] {0, temp[1]+k, temp[2]+1});
}
}
}
}
}
Main
- N๊ณผ K ์ ๋ ฅ
- ์ผ์ชฝ ์ค๊ณผ ์ค๋ฅธ์ชฝ ์ค์ ์ ๋ ฅ๋ฐ์ผ๋ฉด์ ์ํํ ์นธ์ธ 0์ด๋ฉด ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ true๋ก ์ค์ ํด ์ค๋ค.
- search ํจ์ ํธ์ถ
- ๊ฒ์์ ํด๋ฆฌ์ดํ ์ ์์ผ๋ฉด 1์ ์ถ๋ ฅ, ํด๋ฆฌ์ดํ ์ ์์ผ๋ฉด 0์ ์ถ๋ ฅ
Search
- queue์ [x์ขํ, y์ขํ, ์๊ฐ]์ ๋ฃ์ด์ค๋ค.
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ ์กฐ๊ฑด์ ์ค์ ํด ์ค๋ค.
1) n๋ฒ ์นธ๋ณด๋ค ๋ ํฐ ์นธ์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ flag๋ฅผ true๋ก ์ค์ ํ ํ ์ข ๋ฃํด ์ค๋ค.
2) ํ ์นธ ์์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ฉด ๊ฐ ์ ์๋ ๊ณณ์ด๋ฏ๋ก ์ด๋ ํ queue์ ์ถ๊ฐํด ์ค๋ค.
3) ํ ์นธ ๋ค๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์ง๋์ ์กด์ฌํ๋ ์นธ์ด๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๊ณ , ์์ง ์์ด์ง์ง ์์ ์นธ์ด๋ฉด ์ด๋ ํ queue์ ์ถ๊ฐํด ์ค๋ค.
4) ๋ฐ๋ํธ ์ค๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ฉด ๊ฐ ์ ์๋ ๊ณณ์ด๋ฏ๋ก ์ด๋ ํ queue์ ์ถ๊ฐํด ์ค๋ค.
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 13549_์จ๋ฐ๊ผญ์ง 3 (0) | 2023.03.12 |
---|---|
[Baekjoon] 17129_์๋ฆฌ์์จ์์ก๋นจ์ด๋ฑ๋ฐ๊ตฌ๋ฆฌ๊ฐ ์ ๋ณด์ฌ์ ์ฌ๋ผ์จ ์ด์ (0) | 2023.03.09 |
[Baekjoon] 14395_4์ฐ์ฐ (0) | 2023.03.05 |
[Baekjoon] 12761_๋๋ค๋ฆฌ (0) | 2023.03.03 |
[Baekjoon] 11123_์ ํ๋ง๋ฆฌ... ์ ๋๋ง๋ฆฌ... (0) | 2023.03.01 |