[C]백준_25205 : 경로당펑크 2077

Alal11·2023년 3월 8일
0
post-thumbnail

출처

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


문제

시은이는 종합설계 프로젝트로 오픈월드 액션 고스톱 게임 경로당펑크 2077을 개발하고 있다. 대사를 추가하던 중, 사용자 이름에 따라 '을' 또는 '를' 중 하나를 출력해야 함을 깨달았다. 예를 들어 이름이 도현이라면 도현'을' 이라고 출력해야 하고, 인하라면 인하'를' 이라고 출력해야 한다. 그 기준은 이름 마지막 글자의 받침 존재 여부이다.

사용자는 반드시 한글 음절로만 구성된 이름을 사용한다. 이름의 모든 음절은 위 표의 초성, 중성, 종성을 순서대로 하나씩만 골라 조합하여 만들 수 있다. 예를 들어 음절 인(초성 ㅇ, 중성 ㅣ, 종성 ㄴ), 하(초성 ㅎ, 중성 ㅏ, 종성 없음)는 사용자 이름에 등장할 수 있다. 반대로 짜, 계, 와, 삵은 모두 위 표에 없는 낱자가 포함되어 사용자 이름에 등장하지 않는다.

위 그림과 같은 표준 두벌식 자판에서 사용자 이름을 영문 모드 소문자로 타이핑하여 얻는 문자열을 문자열 ss라고 하자. 문자열 ss가 주어지면 원래 사용자 이름 마지막 글자에 받침이 존재하는지 판별하는 프로그램을 작성하라.


입력

첫 번째 줄에 문자열 ss의 길이를 나타내는 정수 NN이 주어진다.

두 번째 줄에 문자열 ss가 주어진다.


출력

사용자 이름 마지막 글자에 받침이 있다면 1, 없다면 0을 출력한다.


제한

  • 2 ≤ NN ≤ 30

예제 입출력


노트

현대 한글의 모든 초성, 중성, 종성 목록은 다음과 같다.

초성 : ㄱ,ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ
중성 : ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ, ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ
종성 : (없음), ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ
하지만 이 문제에선 편의를 위해 입력으로 주어질 수 있는 초성, 중성, 종성의 종류를 제한하였다.


알고리즘 분류

  • 구현
  • 문자열

➡️문제 분석

입력받은 문자열의 맨 마지막 문자가 종성인지 중성인지만 확인하면 되는 문제이다.


➡️코드(⭕)

#include <stdio.h>

int main()
{
    int N;
    char word[30];

    scanf("%d", &N);
    scanf("%s", word, sizeof(word));

    switch (word[N - 1]) {
    case 'k':
    case 'i':
    case 'j':
    case 'u':
    case 'h':
    case 'y':
    case 'n':
    case 'b':
    case 'm':
    case 'l':
    case 'o':
    case 'p':
        printf("0\n");
        break;
    default:
        printf("1\n");
    }
    return 0;
}

➡️코드 분석

  1. 문자열 길이를 나타내는 N과 배열 word에 문자열을 입력받는다.

  2. switch문을 이용하여 word의 마지막 글자인 word[N-1]이 중성(ㅏ, ㅑ, ㅓ, ...)인 경우, 받침이 없다는 뜻이므로 0을 출력한다. 중성이 아니라면 종성으로 받침이 있으니 1을 출력한다.


➡️end

앞에서부터 단어를 맞춰나가야 되나 싶었는데 맨 마지막 단어만 생각해주면 되는 문제였다.

0개의 댓글