Algorithm, boj, 디지털티비(2816)

문제유형

  • greedy

    해결

  • 스페셜 저지이므로 답이 여러개일수있다
  • kbs1과 kbs2의 위치를 찾는다
  • kbs1까지 1로 내려가서 4로 올린다
  • 만약 kbs2 , kbs1 순서이면 kbs1이 4로 올리면서 kbs2를 한칸 아래로 보내기때문에 kbs2위치에 +1을 해준다
package org.baekjoon;

import java.io.*;

public class test2816_greedy_digitalTv {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int[] k = new int[2];

		for (int i=0; i<N ; i++) {
			String channel = br.readLine();
			if(channel.equals("KBS1"))
				k[0] = i;
			else if(channel.equals("KBS2"))
				k[1] = i;
		}

		// kbs2, kbs1 순서이면 kbs1이 올라가면서 kbs2를 아래로 한칸 내린다
		if(k[0] > k[1]) k[1]++;
		for(int i=0; i<2; i++) {
			for(int j=0; j<k[i]; j++) {
				System.out.print("1");
			}
			if(i==1) k[1]--;
			for(int j=0; j<k[i]; j++) {
				System.out.print("4");
			}
		}

	}

}


Reference