[BOJ] 1515 - 수 이어 쓰기 (🥈 실버 3티어)
사용 언어: Python3, Java
문제
풀이
나의 풀이
자바
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
String target = in.readLine();
int ans = 0;
while (true) {
ans += 1;
String tmp = Integer.toString(ans);
while (tmp.length()>0 && target.length()>0) {
if (tmp.charAt(0) == target.charAt(0)) {
target = target.substring(1); // 시작 인덱스
}
tmp = tmp.substring(1); // tmp 첫 글자 제거
}
if (target.equals("")) { // 더이상 찾을게 없으면 break
out.write(Integer.toString(ans)); // out.write(ans); 는 안된다 !!
break;
}
}
out.close();
in.close();
}
}
- 테스트 케이스: 성공
- 제출 결과: 성공
- 참고로 마지막
out.write()
부분에 문자열로 바꾸지 않고 정수를 그대로 집어넣으면 제대로 된 답이 아닌 쓰레기 값이 나온다.BufferedWriter
의write()
메소드는 정수를 입력하는 메소드가 아니기 때문이다.- 문자(char)를 int형으로 입력을 받는 거라 쓰레기 값이 뜬다.
다른 풀이
파이썬
target = input() ans = 0 while True: ans += 1 tmp = str(ans) while len(tmp) > 0 and len(target) > 0: if tmp[0] == target[0]: target = target[1:] # target의 맨 앞 한글자를 제거한다 tmp = tmp[1:] # tmp의 맨 앞 한글자를 제거한다 if target == '': # 더이상 찾을 숫자가 없다면 답은 그때의 ans print(ans) break
자바
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
String target = in.readLine();
int ans = 1;
int lp = 0; // target의 각 문자를 가리키는 포인터 (left pointer)
loop: while (true) {
String tmp = String.valueOf(ans);
for (int i=0; i<tmp.length(); i++) {
if (tmp.charAt(i) == target.charAt(lp)) lp++;
if (lp == target.length()) break loop; // 더이상 찾을게 없으면 break
}
ans++;
}
out.write(String.valueOf(ans));
out.close();
in.close();
}
}
- 테스트 케이스: 성공
- 제출 결과: 성공
break <반복문이름>;
로 특정 반복문을 빠져나갈 수 있다.
💛 개인 공부 기록용 블로그입니다. 👻