알고리즘(BOJ)/Gold
백준 - 이모티콘 14226
ch.0
2023. 2. 2. 16:31
문제 분석
처음에는 복사+붙여넣기가 세트니까 2배 만큼 증가시키면서 카운트를 2 증가시켰다. 그랬더니 실패가 됐다.
혹시 이 차이를 아시는 분은 댓글 남겨주세요,,
q.offer(new int[] {2*value,value,cnt+2});
q.offer(new int[] {value+clip,clip,cnt+1});
q.offer(new int[] {value,value,cnt+1});
q.offer(new int[] {value+clip,clip,cnt+1});
전체소스
package test;
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String args[]) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int target = Integer.parseInt(br.readLine());
Queue<int[]> q = new LinkedList<>();
q.offer(new int[] {1,0,0});
int result=999999;
boolean [][] visited = new boolean[2001][2001];
while(!q.isEmpty()){
int[] poll = q.poll();
int value = poll[0];
int clip = poll[1];
int cnt = poll[2];
if(cnt>result) {
continue;
}
if(value==target){
if(cnt<result){
result=cnt;
}
}else if(value>target){
q.offer(new int[] {value-1,clip,cnt+1});
}else if(value<target&& visited[value][clip]==false){
visited[value][clip]=true;
q.offer(new int[] {value,value,cnt+1});
if(clip>0&& value>0){
q.offer(new int[] {value+clip,clip,cnt+1});
q.offer(new int[] {value-1,clip,cnt+1});
}
}
}System.out.println(result);
}
}