광규니
광규니네
광규니
전체 방문자
오늘
어제
  • 분류 전체보기 (154)
    • 알고리즘 (100)
      • 알고리즘 개념 (2)
      • 문제 풀이 (96)
    • 주절주절 (19)
      • 자격증, 활동 후기 (4)
      • 전시회 후기 (3)
      • 이모저모 (2)
      • 회고 (3)
      • 뜨럼 (7)
    • 운영체제 (9)
    • 개발 지식 (9)
      • Apple Watch (4)
      • MySQL (2)
      • Eclipse (1)
      • XCode (1)
    • 네트워크 공부 (1)
    • 데이터베이스 공부 (5)
    • Java 공부 (7)
    • TMP (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • DP
  • 드린이
  • 오블완
  • 운영체제
  • 컴퓨터 사이언스
  • OS
  • BFS
  • 개념
  • 애플워치 앱 만들기
  • 알고리즘
  • 티스토리챌린지
  • 합주
  • 백준
  • BOJ
  • 다이나믹 프로그래밍
  • 애플워치 앱
  • 자바
  • 구현
  • 프로그래머스

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
광규니
알고리즘/문제 풀이

[Java/자바 백준 14226] 이모티콘

알고리즘/문제 풀이

[Java/자바 백준 14226] 이모티콘

2022. 4. 14. 16:17
반응형

풀이

문제에 대한 이해가 어려운 문제였다.

 

문제 조건은 

  1. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. - > 클립보드 = 화면
  2. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. - > 화면 += 클립보드
  3. 화면에 있는 이모티콘 중 하나를 삭제한다. -> 화면 -= 1

각각의 연산이 1초씩 걸립니다.

(저는 문제를 잘못 이해했었는데 1, 2, 3단계로 모든 단계를 마치면 1초가 걸린다라고 이해를 했어요 ㅜㅜ)

 

처음 조건이 화면에 한개가 있고,

1번 연산, 2번 연산, 3번 연산을 각각 써줘서 가장 최소의 시간으로 S까지 도달하는 초를 구해주면 됩니다.

 

2차원 boolean 배열을 따져줘서 이미 방문한 곳은 방문하지 않게 만들구,

각각의 조건에 맞게 구현해주었습니다. 

import java.io.*;
import java.util.*;

public class Main {
	static boolean[][] visited;
	static int S;
	
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		S = Integer.parseInt(br.readLine());
		
		bfs();
	}

	private static void bfs() {
		Queue<Node> queue = new LinkedList<>();
		queue.offer(new Node(1, 0, 0));
		// 화면, 클립보드 
		visited = new boolean[1001][1001];
		visited[1][0] = true;
		
		while(!queue.isEmpty()) {
			Node cur = queue.poll();
			
			// 조건에 해당하면 출력하고 멈추기 
			if(cur.monitor == S) {
				System.out.println(cur.time);
				break;
			}
			
			// 1번조건 - 클립보드 = 화면 
			if(cur.monitor != 0 && !visited[cur.monitor][cur.monitor]) {
				queue.offer(new Node(cur.monitor, cur.monitor, cur.time + 1));
				visited[cur.monitor][cur.monitor] = true;;
			}
				
			// 2번조건 화면 += 클립보드 
			if(cur.clipBoard != 0 && cur.monitor + cur.clipBoard <= 1000 &&!visited[cur.clipBoard + cur.monitor][cur.clipBoard] ) {
				queue.offer(new Node(cur.monitor + cur.clipBoard, cur.clipBoard, cur.time + 1));
				visited[cur.clipBoard + cur.monitor][cur.clipBoard] = true;
			}
			
			// 3번조건 화면 -= 1
			if(cur.monitor - 1 >= 0 && !visited[cur.monitor - 1][cur.clipBoard]) {
				queue.offer(new Node(cur.monitor - 1, cur.clipBoard, cur.time + 1));
				visited[cur.monitor - 1][cur.clipBoard] = true;
			}
		}
		
	}
	
	private static class Node{
		int monitor, clipBoard, time;
		
		public Node(int monitor, int clipBoard, int time) {
			this.monitor = monitor;
			this.clipBoard = clipBoard;
			this.time = time;
		}
	}
}
반응형
저작자표시 (새창열림)

'알고리즘 > 문제 풀이' 카테고리의 다른 글

[Java/자바 SWEA 1953] 탈주범 검거  (0) 2022.04.11
[Java/자바 백준 1504] 특정한 최단 경로  (0) 2022.03.30
[Java/자바 백준 1459] 걷기  (0) 2022.03.29
[Java/자바 백준 1781] 컵라면  (0) 2022.03.29
[Java/자바 백준 23290] 마법사 상어와 복제  (0) 2022.03.28
  • 풀이
'알고리즘/문제 풀이' 카테고리의 다른 글
  • [Java/자바 SWEA 1953] 탈주범 검거
  • [Java/자바 백준 1504] 특정한 최단 경로
  • [Java/자바 백준 1459] 걷기
  • [Java/자바 백준 1781] 컵라면
광규니
광규니
공부 및 일상 올리기~

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.