728x90
문제
: 그대로 읽어도 같은 숫자 | 반대로 읽어도 같은 숫자
문제 링크: https://www.acmicpc.net/problem/1259
원리
: 입력받은 숫자 길이의 반으로 나눠 반복문을 돌린다.
: 앞에서 부터 순차적으로 선택한 숫자와, 뒤에서 부터 순차적으로 선택한 숫자를 비교한다.
: 중간에 두 숫자가 다른 숫자가 되면, 결과를 'no'로 하고 반복을 멈춘다.
풀이 및 사용 방법
1. 입력은 버퍼리더를 이용했다. (연산시간 단축)
: 버퍼리더는 입력을 무조건 String으로 받기 때문에 타입변환 선정에 따른 시간을 단축할 수있다.
: 따라서, 코드를 숫자값이 아닌 String비교를 이용하여 연산시간을 단축 시켰다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
...
String num = br.readLine();
2. 테스트케이스 수가 따로 주어지지 않으므로, 반복은 while문을 사용했다. (무한 루프)
/* while문의 조건은 true일 때 이므로, 항상 true로 두면 무한 반복 */
while (true) {
...
}
3. 브레이크 포인트는 주어진 0을 이용했다. (0 조건이 주어지지 않을 시, count를 이용한 while문 탈출방법 사용)
/* 입력에서 마지막 숫자로 0이 주어질 시 */
while (true) {
String num = br.readLine();
if(num.equals("0")) break;
}
/* 입력에서 탈출조건이 없을 시, */
while (count-->0) {
int count = 반복할 횟수;
...
}
/* count-->0 의미 */
count--;
count>0;
4. 출력은 둘중 선택
/* 방법 1 : 일반출력. 근소하게 더 빠르다. */
System.out.println(result);
/* 방법 2 : 버퍼라이터. 근소하게 더 빠르다. */
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
선언 후, while문 안에서 입력
bw.write(result+"\n");
while문 밖에서 클로즈
bw.close();
나의 코드
1. System.out.println 사용 방법
import java.io.*;
public class no1259 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String num = br.readLine();
if(num.equals("0")) break;
String result = "yes";
for (int i = 0; i < (num.length() / 2); i++) {
if (num.charAt(i) != num.charAt(num.length() - 1 - i)) {
result = "no";
break;
}
}
System.out.println(result);
}
}
}
2. Bufferwriter 사용방법
더보기
import java.io.*;
public class no1259 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while (true) {
String num = br.readLine();
if(num.equals("0")) break;
String result = "yes";
for (int i = 0; i < (num.length() / 2); i++) {
if (num.charAt(i) != num.charAt(num.length() - 1 - i)) {
result = "no";
break;
}
}
bw.write(result+"\n");
}
bw.close();
}
}
728x90
'알고리즘 저장소 (일반방식과 나만의 풀이) > JAVA' 카테고리의 다른 글
| [Java] 코드 실행시간 측정 (0) | 2023.01.02 |
|---|---|
| [백준] no1920: 수 찾기 (0) | 2023.01.02 |
| [백준] no1436 : 영화감독 숌 (0) | 2022.12.31 |
| [백준] no1874. 스택수열 (0) | 2022.12.30 |
| [백준] no1018 체스판 다시 칠하기 (2) | 2022.12.29 |