-
[백준] 14226 이모티콘ALGORITHM/BOJ 2022. 8. 15. 13:13
https://www.acmicpc.net/problem/14226
2022-08-15
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main14226 {static class Emoticon {int val;int copy;public Emoticon(int val, int copy) {this.val = val;this.copy = copy;}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int S = sc.nextInt();Queue<Emoticon> q = new LinkedList<>();q.add(new Emoticon(1, 0));int time = 0;boolean[][] vtd = new boolean[S*2+1][S*2+1];loop:while(!q.isEmpty()) {int size = q.size();while(size > 0) {Emoticon e = q.poll();if(e.val == S) break loop;if(!vtd[e.val][e.val]) {q.add(new Emoticon(e.val, e.val)); // 1vtd[e.val][e.val] = true;}if(e.val+e.copy <= S*2 && !vtd[e.val+e.copy][e.copy]) {q.add(new Emoticon(e.val+e.copy, e.copy)); // 2vtd[e.val+e.copy][e.copy] = true;}if(e.val-1 >= 2 && !vtd[e.val-1][e.copy]) {q.add(new Emoticon(e.val-1, e.copy)); // 3vtd[e.val-1][e.copy] = true;}size--;}time++;}System.out.println(time);}}cs #문제풀이
아래 연산들은 모두 1초 씩이어서 한 케이스 당 3개의 연산들을 한 번씩 다 적용 했다.
- 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다.
- 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다.
- 화면에 있는 이모티콘 중 하나를 삭제한다.
조건 중 S가 2 <= S <= 1000 이므로, visited를 체크하는 배열은 S*2+1로 잡았다.
'ALGORITHM > BOJ' 카테고리의 다른 글
[BOJ] 1389 케빈 베이컨의 6단계 법칙 (0) 2023.05.21 [백준] 2660 회장뽑기 (0) 2022.08.15 [백준] 17298 오큰수 (0) 2022.07.25 [백준] 3273 두 수의 합 (0) 2022.07.25 [BOJ] 1541 잃어버린 괄호 (0) 2022.07.04