11654번: 아스키 코드
https://www.acmicpc.net/problem/11654
# 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// String 형 -> char 형 -> int 형 -> String 형
// br.readLine() -> .charAt(0) -> (int) -> String.valueOf()
bw.write(String.valueOf((int) br.readLine().charAt(0)));
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- 처음 코드는 연습했던 대로 시간 단축을 위해 BufferedReader 와 BufferedWriter 를 사용하여 작성했다.
- 그러나 String 형으로 입출력이 이루어지는 Buffered 에서 입력 값을 ASCII 코드로 변환하기 위해서는 String → char → int → String 의 과정을 거치게 되어서 더 효율적인 코드가 있을 것 같았다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// byte 값으로 문자 한 개만 읽으며 대응되는 아스키코드 값을 저장하는 System.in 사용
int text = System.in.read();
System.out.println(text);
}
}
- 위는 구글링을 통해 알게 된 깔롱한 코드이다.
- 가장 기초 입력방법인 System.in 은 문자 한 개만 읽으며 대응되는 아스키코드 값을 저장할 수 있다.
- 코드는 이 블로그를 참고하였다 :D
[백준] 11654번 : 아스키 코드 - JAVA [자바]
https://www.acmicpc.net/problem/11654 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 매
st-lab.tistory.com
2743번: 단어 길이 재기
https://www.acmicpc.net/problem/2743
# 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 문자열의 길이 출력
bw.write(String.valueOf(br.readLine().length()));
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- BufferedWriter 는 숫자를 아스키코드에 따른 문자로 출력하기 때문에 String.valueOf() 를 이용해 길이 값을 String 형으로 변환해 주었다.
2744번: 대소문자 바꾸기
https://www.acmicpc.net/problem/2744
# 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 입력으로 주어진 단어
String word = br.readLine();
for (int i = 0; i < word.length(); i++) {
// 단어의 각 글자의 아스키 코드 값
int ascii = (int) word.substring(i, i + 1).charAt(0);
if (ascii >= 65 && ascii <= 90) {
// 대문자 -> 소문자
bw.write(word.substring(i, i + 1).toLowerCase());
} else if (ascii >= 97 && ascii <= 122) {
// 소문자 -> 대문자
bw.write(word.substring(i, i + 1).toUpperCase());
}
}
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- BufferedReader 가 br.readLine() 을 딱 한 번만 이용하여 딱 한 줄만 읽어올 수 있도록 word 변수에 담아 사용했다.
- 변수를 사용하지 않고 br.readLine() 을 중복으로 작성하면 버퍼가 다음 입력줄을 기다리기 때문에 나도 버퍼도 민망해질 수 있다. (실행결과 기다리면서 로딩창만 쳐다본 사람)
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[새싹: 함수] 백준 15964, 2475 (0) | 2024.07.09 |
---|---|
[새싹: 문자열 (2)] 백준 2754, 27866, 11718, 9086 (0) | 2024.07.08 |
[새싹: 배열] 백준 10871, 10807, 5597, 2738 (0) | 2024.07.06 |
[새싹: 빠른 입출력] 백준 15552 (0) | 2024.07.05 |
[새싹: 반복] 백준 2741, 10872, 10950, 10952, 2739, 2438, 10951 (0) | 2024.07.04 |