본문 바로가기
프로그래밍/백준 문제 풀이(자바)

백준 10809번 자바 문제 답/해설(알파벳 찾기 문제)

by 리드민 2021. 12. 5.
반응형

[1] 백준 카테고리
단계별로 풀어보기
문자열
3단계 10809번 문제
알파벳 찾기

https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net


[2] 문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

1. 입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
2. 출력
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
3. 예제 입력 1
baekjoon
4.예제 출력 1
1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

[3] 정답
1. 정답 해설 미포함

import java.util.Scanner;

public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
 
 
		int[] arr = new int[26];
		
		for(int i = 0; i < arr.length; i++) {
			arr[i] = -1;
		}
 
		String str = in.nextLine();
 
		for(int i = 0; i < str.length(); i++) {
			char ch = str.charAt(i);
    
			if(arr[ch - 'a'] == -1) {
				arr[ch - 'a'] = i;
			}
		}
 
		for(int val : arr) {
			System.out.print(val + " ");
		}
	}
}


2. 정답 해설 포함

import java.util.Scanner;
// java.util.Scanner 클래스를 import 한다.
public class Main {
// 접근제어자 public으로 Main class를 선언한다.
 
	public static void main(String[] args) {
	// 접근제어자 public으로 메모리에 상주하게 리턴값이 없이 main 함수를 선언한다
		Scanner in = new Scanner(System.in);
		// Scanner 객체 in를 선언한다.
 
		int[] arr = new int[26];
		// int형 배열 arr를 26개 선언한다.
		
		for(int i = 0; i < arr.length; i++) {
		// for 문을 선언한다.
			arr[i] = -1;
		}
		// 배열 arr[i]에 -1 값이 저장되게 된다.
 
		String str = in.nextLine();
		// String str를 선언하고 문자열을 입력받아 저장한다
 
		for(int i = 0; i < str.length(); i++) {
		// for문을 선언하고 0~<str.length() 범위까지 반복한다.
			char ch = str.charAt(i);
			/* 문자형 변수 ch를 선언하고 str.char(0)부터 str.char(str.length()-1)까지
			문자열의 문자들을 한글자씩 저장한다. */
    
			if(arr[ch - 'a'] == -1) {
			// arr[ch = 'a' 값이 -1일때 괄호안의 문장을 실행한다.
				arr[ch - 'a'] = i;
				/* ex) arr[c - 'a'] = 0 -> arr[2] = 0
				arr[e - 'a'] = 1 -> arr[4] -> 1 */
			}
		}
 
		for(int val : arr) {
			System.out.print(val + " ");
		}
		// 배열의 값을 한칸씩 띄워서 출력한다.
	}
}

str.charA(i) : str이 가리키고 있는 문자열에서 i번째에 있는 문자를 char 타입을 변환한다.

반응형