코딩테스트/SWEA
[SWEA] (D1) 2050. 알파벳을 숫자로 변환
l0o0lv(한동근)
2024. 10. 13. 21:36
알파벳으로 이루어진 문자열을 입력 받아 각 알파벳을 1부터 26까지의 숫자로 변환하여 출력하라.
[제약 사항]
문자열의 최대 길이는 200이다.
[입력]
알파벳으로 이루어진 문자열이 주어진다.
[출력]
각 알파벳을 숫자로 변환한 결과값을 빈 칸을 두고 출력한다.
[풀이]
아스키코드를 활용하려했는데, 도무지 생각이 나지 않았다.
그래서 char배열을 만든 후 하나하나 비교해가면서 출력을 했다.
정답처리 됐지만 비효율적이라고 느꼈고, 풀이를 찾아봤다.
import java.util.*;
import java.lang.*;
import java.io.*;
class Solution {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
char[] charNum = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
for(int i=0; i<str.length() ; i++){
for(int j=0; j<charNum.length ; j++){
if(str.charAt(i) == charNum[j])
System.out.print((j+1) + " ");
}
}
}
}
[다른 사람의 풀이]
arr[i] 가 A라고 예를 들자.
A의 아스키코드 값은 65이다.
여기서 'A' 를 빼주면 0이 되고, 1을 더하면 숫자 1이 나오게 된다.
import java.util.Scanner;
public class test {
public static void main(String[] args) {
String word;
Scanner sc = new Scanner(System.in);
word = sc.next(); //문자열 입력
char[] arr = word.toCharArray(); //문자열의 배열을 한 글짜씩 잘라 배열에 삽입
for(int i = 0; i<arr.length; i++){ //배열 길이만큼 반복
System.out.printf(arr[i]-'A'+1+" "); //아스키코드 A = 65를 이용
} //입력받은 문자 - 65 + 1을 사용하여 값 추출
}
}
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com