🔺 문제
14226번: 이모티콘
영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import java.util.*;
import java.io.*;
public class Main {
static int S;
static boolean[][] visited = new boolean[1001][1001]; // 클립보드, 화면
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
S = Integer.parseInt(br.readLine());
bfs();
}
static void bfs() {
Queue<Node> queue = new LinkedList<>();
queue.add(new Node(0, 1, 0));
visited[0][1] = true; // 클립보드, 화면
while(!queue.isEmpty()) {
Node now = queue.poll();
if(now.total == S) {
System.out.println(now.time);
return;
}
// 1. 화면에 있는 이모티콘, 클립보드에 저장
queue.offer(new Node(now.total, now.total, now.time + 1));
// 2. 클립보드에 있는 이모티콘 붙여넣기
if(now.clipboard != 0 && now.total + now.clipboard <= S && !visited[now.clipboard][now.total + now.clipboard]) {
queue.offer(new Node(now.clipboard, now.total + now.clipboard, now.time + 1));
visited[now.clipboard][now.total + now.clipboard] = true;
}
// 3. 화면이 있는 이모티콘 중 하나 삭제
if(now.total >= 1 && !visited[now.clipboard][now.total - 1]) {
queue.offer(new Node(now.clipboard, now.total - 1, now.time + 1));
visited[now.clipboard][now.total - 1] = true;
}
}
}
}
class Node {
int clipboard, total, time; // 클립보드에 있는 임티콘 수, 화면에 있는 임티콘 수, 걸린 시간
Node(int clipboard, int total, int time) {
this.clipboard = clipboard;
this.total = total;
this.time = time;
}
}
|
cs |
✅ 해결 아이디어
✔ BFS
- 2차원 방문 배열 생성해 방문 여부 체크
⇨ visited[ clipboard에 현재 복사된 이모티콘 개수][ 현재 화면에 출력된 총 이모티콘 개수 ]
🔺 다른 풀이들
- 설명 짱짱짱 (복습용)
[백준/자바] 14226 이모티콘
문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S
settembre.tistory.com
- 그냥 설명 굿.. (복습용)
[Java/자바 백준 14226] 이모티콘
풀이 문제에 대한 이해가 어려운 문제였다. 문제 조건은 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. - > 클립보드 = 화면 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한
kwangkyun-world.tistory.com
💬 느낀 점
▷ 방문 여부 확인 → 2차원 배열
▷ 여러 정보 저장 → 클래스 따로 빼서 생성...
잊지 말자 BFS...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ 참고해서 코드 작성했음. 설명도 굿!
[백준]14226: 이모티콘 - JAVA
[백준]14226: 이모티콘 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력
moonsbeen.tistory.com
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 15486번: 퇴사 2 (0) | 2023.05.28 |
---|---|
[백준/JAVA] 17086번: 아기 상어 2 (0) | 2023.05.27 |
[백준/JAVA] 13913번: 숨바꼭질 4 (0) | 2023.05.27 |
[백준/JAVA] 13549번: 숨바꼭질 3 (0) | 2023.05.26 |
[백준/JAVA] 1697번: 숨바꼭질 (0) | 2023.05.26 |