문제
https://www.acmicpc.net/problem/5671
5671번: 호텔 방 번호
선영이는 집 호수에 반복되는 숫자가 있는 경우에는 그 집에 사는 사람에게 불운이 찾아온다고 믿는다. 따라서, 선영이는 838호나 1004호와 같이 한 숫자가 두 번 이상 들어있는 집에는 절대 살지
www.acmicpc.net
내가 작성한 코드
import java.io.*;
public class 백준5671 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = null;
while((input = br.readLine()) != null){
String[] line = input.split(" ");
int start = Integer.parseInt(line[0]);
int end = Integer.parseInt(line[1]);
int count = 0;
for(int i = start; i<=end; i++){
String number = Integer.toString(i);
int[] oton = new int[10];
boolean state = true;
for(int j = 0; j<number.length(); j++){
oton[number.charAt(j)-'0']++;
if(oton[number.charAt(j)-'0'] != 1){
state = false;
break;
}
}
if(state == true){
count++;
}
}
bw.write(Integer.toString(count));
bw.newLine();
}
bw.close();
}
}
처음에는 문자열을 공백으로 만들어서 거기에 contain이 되어 있는가 안 되어 있는가로 풀었는데
그랬더니 메모리 초과가 뜨더라
그래서 방법을 바꿔서 int형 배열로 0부터 9까지의 자리를 만들어준 다음에
그 숫자에 해당하는 자리에 1을 더해주고
그 숫자의 위치에 존재하는 값이 1이 아닐 경우는 중복되었다는 뜻이므로
break하도록 해주었다
'자바 > 백준' 카테고리의 다른 글
[백준 25304] 영수증 (0) | 2022.09.05 |
---|---|
[백준 13909] 창문 닫기 (0) | 2022.08.26 |
[백준 4796] 캠핑 (0) | 2022.08.23 |
[백준 2954] 창영이의 일기장 (0) | 2022.08.23 |
[백준 2810] 컵홀더 (0) | 2022.08.23 |