-
[백준 - 1235번] 학생 번호 - Java //Wello Horld//Algorithm/BOJ(Baekjoon Online Judge) 2019. 12. 18. 11:18
이번에는 BOJ의 1235번 문제 "학생 번호" 를 풀어보도록 하자
주어진 학생들의 학생 번호를 뒤에자리부터 k자리만큼 잘랐을 때 구분이 가능한지 (unique key인지) 를 확인해서 가장 작은 k 값을 구하면 되는 문제이다.
입력으로 학생의 수 N이 주어지고, N개의 줄만큼 각 학생의 학생 번호가 순서대로 주어진다. 학생 번호는 서로 다르고 길이는 같으며, 0 ~ 9 의 숫자로 이루어진 100보다 작거나 같은 문자열이다.
출력으로 가장 작은 k 값을 출력하면 된다.
성공한 코드는 아래와 같다.
import java.io.*; import java.util.*; public class sample { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); String[] student = new String[N]; HashMap<String, Boolean> map = new HashMap<String, Boolean>(); int len = 0; for(int i = 0; i < N; i++){ student[i] = br.readLine(); if(i == 0) len = student[i].length(); } int k = 0; base: for(int i = 0; i <= len; i++){ for(int j = 0; j < N; j++){ String sub = student[j].substring(len - i); if(map.containsKey(sub)){ map.clear(); continue base; } else { map.put(sub, true); } } k = i; break; } bw.write(k + "\n"); bw.flush(); br.close(); bw.close(); } }
문제 : https://www.acmicpc.net/problem/1235
혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요.
'Algorithm > BOJ(Baekjoon Online Judge)' 카테고리의 다른 글
[백준 - 1292번] 쉽게 푸는 문제 - Java //Wello Horld// (0) 2019.12.24 [백준 - 1237번] 정ㅋ벅ㅋ - Java //Wello Horld// (0) 2019.12.18 [백준 - 1159번] 농구 경기 - Java //Wello Horld// (0) 2019.12.18 [백준 - 1076번] 저항 - Java //Wello Horld// (0) 2019.12.13 [백준 - 10798번] 세로읽기 - Java //Wello Horld// (0) 2019.12.13