블로그 이전,2022. 12. 1. 03:19 에 작성했던 글입니다.
<내가 생각했던 방법>
단어를 입력 받고 알파벳(char형)을 판단하여 int형으로 출력하는 문제라고 생각했다.
int형으로 맞춰야겠다고 생각했고 단어, 알파벳을 아스키코드로 바꿔서 풀었다.
아스키코드 값으로 비교를 하고, 입력한 단어의 인덱스 값을 alphabet[j[에 넣었다.
아직도 알파벳 소문자 아스키코드로 넣어져있으면 -1을 출력한다.<-참고로 이 부분을 잘못 생각했다.
<틀린 풀이>
import java.util.Scanner;
public class Boj {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
int[] alphabet = {'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'};
//아스키코드로 넣고 싶어서 char형을 int로 받음
for (int i = 0; i < str.length(); i++) {
for (int j = 0; j < alphabet.length; j++) {
if ((int)str.charAt(i) == alphabet[j]) {
alphabet[j] = i;
break;
}
}
}
for (int i = 0; i < alphabet.length; i++) {
if (97 <= alphabet[i] && alphabet[i] <= 122) { //아직도 알파벳 소문자 아스키코드로 넣어져있으면 -1로 바꿔넣음
alphabet[i] =-1;
}
System.out.print(alphabet[i] + " ");
}
System.out.println();
}
틀렸던 이유
if (97 <= alphabet[i] && alphabet[i] <= 122) 이 부분이 잘못돼서 오류가 난 것이다.
문자길이가 97~100 까지 가면 이 조건과 겹치게 된다.
예를 들어 i가 97이 되면 alphabet[i]=97이 되고 if 조건문이 true가 되어 -1이 들어가게 되는 것이다.
<올바른 풀이>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
int[] alphabet = {'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'};
int[] count = new int[26];
for (int i = 0; i < str.length(); i++) {
for (int j = 0; j < alphabet.length; j++) {
if ((int)str.charAt(i) == alphabet[j]) {
alphabet[j] = i;
count[j]=1;
break;
}
}
}
for (int i = 0; i < alphabet.length; i++) {
if (count[i]==0) {
alphabet[i] =-1;
}
System.out.print(alphabet[i] + " ");
}
System.out.println();
}
}
길이가 26개인 count 배열을 따로 만들어서 (알파벳 배열 길이가 26이니까)
for (int i = 0; i < str.length(); i++) {
for (int j = 0; j < alphabet.length; j++) {
if ((int)str.charAt(i) == alphabet[j]) {
alphabet[j] = i;
이 부분이 실행될 때 카운트도 +1 되게 했다.
그래서 if 조건문에 count[i]=0일 경우 -1을 넣도록 했다.
'알고리즘 리뷰' 카테고리의 다른 글
| 백준 JAVA 3009 네 번째 점 리뷰 (0) | 2023.08.29 |
|---|---|
| 백준 JAVA 11943 파일 옮기기 리뷰 (0) | 2023.08.29 |
| JAVA 백준 15552 빠른 A+B 리뷰 (0) | 2023.08.29 |
| JAVA 백준 2338 긴자리 계산 리뷰 (0) | 2023.08.29 |
| JAVA 백준 11654 리뷰 (0) | 2023.08.29 |