기록하는 개발자

[백준 1681번] 줄 세우기 - JAVA 알고리즘 본문

Baekjoon Online Judge

[백준 1681번] 줄 세우기 - JAVA 알고리즘

gitseok 2022. 3. 25. 11:09

 

package baekjoon_VS_kiseok;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//import java.util.Arrays;
//import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
		

		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken()); // 라벨 수
		String L = st.nextToken(); //제외하는 숫자
		int max = 1; //붙인 라벨중 가장 큰 수
		
		for(int i=1; i<=N;i++) { //라벨 갯수만큼 반복
		String stMax = Integer.toString(max); //String으로 변환
			
			if(stMax.contains(L)) { //현재 수가 L과 겹친다면?
				while(stMax.contains(L)) { //겹치지 않는 수가 나올때까지 반복
						max = max + 1;	
						stMax = Integer.toString(max);
				}
				if(i==N) { //마지막 순번일때 종료
					bw.write(max +"\n");	
				}
				max = max + 1;	
				stMax = Integer.toString(max);
				
			}else { //겹치지 않을시
				if(i==N) { //마지막 순번일때 종료
					bw.write(max +"\n");	
				}
				max = max + 1; //다음수로 넘어간다.
				stMax = Integer.toString(max);
			}
		}
		bw.close();
		br.close();
	}
}

실행 결과

정답이긴 하지만 너무 코드가 난잡한 관계로.. 이후에 다시 한번 풀어봐야겠습니다 ㅠㅠ

개인적으로 정리한 내용을 간단하게 풀어 작성했습니다.
이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다.
Comments