까잉이의 개발노트

[ 백준 10809 ] 알파벳 찾기 JAVA(자바) 문제풀이 본문

개발문제풀이

[ 백준 10809 ] 알파벳 찾기 JAVA(자바) 문제풀이

까잉이 2022. 7. 1. 17:46

 

이 문제를 정리하자면

1. 입력받은 S는 전부 소문자 이며 길이가 100이 넘으면 안된다.

2. a ~ z까지 S의 문자 하나하나 비교해서 존재유무와 위치를 알아낸다 (단, 위치는 처음 등장하는 위치!)

그러므로 나는 아스키 코드를 이용해서 이중 for문을 이용해 하나하나 비교해서 풀었다..


풀이순서

1. 문자열 S를 입력 받고 .toLowerCase()로 모두 소문자로 변경해준다

2. if문으로 S의 길이가 100이 넘는지 확인 한다. 넘을 경우 return!

2. 알파벳은 총 26개 이므로 for문을 26번 돌려줄 것이다.

3. 아스키코드로 a~z는 97~122이므로 ascii 라는 변수에 i+97을 한다 (i는 0부터 시작)

4. 위치를 알아내야하기 때문에 이중 for문을 이용해 S의 문자열 만큼 돌린다.

5. if문으로 ascii와 S의 문자가 같을 경우 위치를 출력하고 처음 등장하는 위치만 필요하므로 break를 한다.

6. a는 존재유무를 나타나는데 존재하면 1이고 없으면 0이다. 0일 경우엔 -1을 출력한다.

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String S = sc.nextLine().toLowerCase();

		if(S.length() > 100) return;

		for(int i = 0; i < 26; i++) {
			int ascii = i + 97; // 아스키 코드 (a : 97 ~)

			int a = 0;

			for(int j = 0; j < S.length(); j++) {
				if(ascii == (int)S.charAt(j)) {
					System.out.print(j + " ");
					a++;
					break;
				}

			}

			if(a == 0) {
				System.out.print("-1 ");
			}
		}

	}

}

 

근데 풀어보고 나니까 .indexOf()를 이용해서 더 쉽게 풀 수 있었을거 같다는 생각도 들고...

그럼 배열에 a~z 다 집어넣어서 비교를 해야겠지?

그게 더 효율적인건지 이게 더 효율적인건지..모르겠다 일단 풀었으니 패쓰!

Comments