• Home
  • About
    • Ryureka Moment photo

      Ryureka

      Sin Prisa, Sin Pausa

    • About Me
    • Facebook
    • Github
    • Youtube
  • Projects
  • Posts
    • Posts
    • ProblemSolvings
    • Tags
    • Blog
    • Examples
  • ProblemSolving
    • ProblemSolving
    • BOJ
    • Programmers
    • SWEA
    • LeetCode
  • FrontEnd
    • FrontEnd
    • HTML
  • BackEnd
    • BackEnd
    • Server
      • Server
      • Spring
      • NodeJS
    • DataBase
      • DataBase
      • MySQL
      • MongoDB
  • Programming
    • Programming
    • Java
    • JS
    • Python
    • CleanCode
  • ComputerScience
    • DataStructure
    • Algorithm

[BOJ] 14226. 이모티콘

15 Apr 2026

Reading time ~1 minute

  • 풀이

풀이

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int S = sc.nextInt();
		int dist[][] = new int[S+1][S+1];

		for (int i = 0; i <= S; i++) {
			Arrays.fill(dist[i], -1);
		}
		
		Queue<Integer> q = new LinkedList<>();
		int s = 1;
		int c = 0;
		q.add(s);
		q.add(c);
		dist[1][0]=0;
		while (!q.isEmpty()) {
			s = q.poll();
			c = q.poll();
			if (dist[s][s] == -1) {
				dist[s][s] = dist[s][c] + 1;
				q.add(s); q.add(s);
			}
			if (s+c<=S && dist[s+c][c] == -1) {
				dist[s + c][c] = dist[s][c] + 1;
				q.add(s + c); q.add(c);
			}
			if (s - 1>=0 && dist[s - 1][c] == -1) {
				dist[s - 1][c] = dist[s][c] + 1;
				q.add(s - 1); q.add(c);
			}
		}

		int ans = Integer.MAX_VALUE;
		
		for (int i = 0; i <=S ; i++) {
			if (dist[S][i]!=-1 && ans > dist[S][i]) {
				ans = dist[S][i];
			}
		}
		System.out.print(ans);
	}
}


BFS Share