알고리즘(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);

    }
}