반응형
# 문제 출제 사이트
https://www.acmicpc.net/problem/2744
# 문제
영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오.
# 입력
첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다.
단어의 길이는 최대 100이다.
# 출력
첫째 줄에 입력으로 주어진 단어에서 대문자는 소문자로, 소문자는 대문자로 바꾼 단어를 출력한다.
# 제출한 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = br.readLine();
for (int i = 0; i < inputStr.length(); i++ ) {
int tempInt = inputStr.charAt(i);
if (tempInt > 90) {
tempInt -= 32;
System.out.print((char)tempInt);
} else {
tempInt += 32;
System.out.print((char)tempInt);
}
}
}
}
- 아스키코드에 대해 알고 있으면 쉽게 풀 수 있는 문제
- 입력된 문자열의 각 인덱스에 있는 char를 숫자로 변환 후 아스키 코드 값에 맞게 더하기 빼기 연산
- 연산된 int 자료형 변수를 다시 char 자료형으로 변환 후 출력해준다.
첫 번째 제출한 코드 리팩터링 후
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = br.readLine();
for (int i = 0; i < inputStr.length(); i++ ) {
int tempNum = inputStr.charAt(i);
tempNum = tempNum > 90 ? tempNum - 32 : tempNum + 32;
System.out.print((char)tempNum);
}
}
}
- if else 대신에 3항 연산자 사용
반응형