본문 바로가기
코딩/백준-자바

[자바] 백준 2816번: 디지털 티비

by 철없는민물장어 2023. 1. 20.
728x90
반응형

https://www.acmicpc.net/problem/2816

 

2816번: 디지털 티비

2012년 12월 31일 새벽 4시부터 지상파 아날로그 TV방송이 종료되었다. TV를 자주보는 할머니를 위해서, 상근이네 집도 디지털 수신기를 구입했다. 원래 상근이네 집에는 KBS1과 KBS2만 나왔다. 할머니

www.acmicpc.net

 

1,2,3,4버튼이 있고 이 버튼들을 조합해서 KBS1, KBS2 채널을 1번,2번채널에 위치시키면 된다.

 

버튼 누르는 횟수가 최소가 되어야한다거나 등의 조건 없이 

그냥 KBS1,KBS2를 1번,2번채널에 위치시킬 수만 있으면 모든 답이 정답처리 된다.

 

나는 간단하게 1번,4번버튼만 사용해서 답을 출력하도록 했다.

 

1번버튼을 이용해서 KBS1이 나올 때까지 돌린 다음,

KBS1을 1번채널까지 4번버튼을 이용해 채널을 올린다.

 

이후 다시 1번버튼을 이용해서 KBS2가 나올 때까지 돌린 다음,

KBS2를 2번채널까지 4번버튼을 이용해 채널을 올린다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;

public class P2816 {

	public static void main(String[] args) throws NumberFormatException, IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuffer sb = new StringBuffer();
		
		int n=Integer.parseInt(br.readLine());
		
		LinkedList<String> list = new LinkedList<>();
		for(int i=0;i<n;i++) {
			list.add(br.readLine());
		}
		
		int idx=0;
		for(idx=0;idx<n && !list.get(idx).equals("KBS1");idx++) {
			sb.append(1);
		}
		list.remove(idx);
		for(int i=0;i<idx;i++) {
			sb.append(4);
		}
		list.add(0, "KBS1");
		for(idx=0;idx<n && !list.get(idx).equals("KBS2");idx++ ) {
			sb.append(1);
		}
		for(int i=0;i<idx-1;i++) {
			sb.append(4);
		}
		
		System.out.println(sb);
	}

}

채널 목록은 LinkedList에 저장했다

(중간에 KBS1을 삭제하고 맨 앞에다 놓을 것이기 때문에 그랬다)

728x90
반응형

댓글