728x90
난이도 : 실버4
풀이일 : 2401114
https://www.acmicpc.net/problem/1235
1235번: 학생 번호
첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부
www.acmicpc.net
링크로 이동하기 귀찮은 분들을 위한 문제캡쳐
풀이 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] students = new String[n];
HashSet<String> num = new HashSet<>();
for (int i = 0; i < n; i++) {
students[i] = br.readLine();
}
for (int i = 1; i <= students[0].length(); i++) {
for (int j = 0; j < n; j++) {
num.add(students[j].substring(students[0].length() - i));
}
if (num.size() == n) {
System.out.println(i);
return;
}
num.clear();
}
}
}
배운 것
- subString(startnum, endnum) : startnum부터 문자열을 자르기
- set.clear : hashset 모든 요소 삭제
풀이
- 중복을 허용하지 않기 위해 hashset을 사용
- 1부터 숫자를 늘려가며, 뒤에서 해당 숫자만큼의 자릿수를 자른 학생들의 번호를 hastset에 추가
- hastset의 요소 수가 학생수와 같다면, 몇 자리의 수를 잘랐는지 출력
반례
입력 | 3 1 2 3 |
출력 | 1 |
느낀점
- 자바로는 실버 문제만 풀어야지.
- 조건을 꼼꼼하게 보지 않아, 반복문의 i 크기 조건을 잘못 설정해서 한 번 틀렸다.
- 한 자리수일때, 한 번 틀렸어서 반례로 기록한다.
'알고리즘 > 🥈 실버' 카테고리의 다른 글
백준 11725 트리의 부모 찾기 자바 풀이 (0) | 2024.01.18 |
---|---|
백준 1764 듣보잡 자바 풀이 (1) | 2024.01.13 |
백준 1652 누울 자리를 찾아라 자바 풀이, 반례 (1) | 2024.01.09 |
백준 1769 3의 배수 자바 풀이 (0) | 2024.01.04 |
백준 1926 그림 자바 풀이 (0) | 2023.12.17 |