본문 바로가기

알고리즘/프로그래머스

프로그래머스 - [PCCE 기출문제] 4번 / 병과분류 C++

SMALL

오늘은 이전 포스팅 2024.10.27 - [알고리즘/프로그래머스] - 프로그래머스 - [PCCE 기출문제] 3번 / 수 나누기 C++

에 이어 4번 문제를 풀어보았다. 3번 문제보다 헷갈릴 케이스는 적은 문제이며, 빈칸 채우기가 아니라 기초 문제로 분류하여 그냥 작성해서 내는 문제여도 좋았을 것 같다.

.

알고리즘 난이도 및 시간 ( ※ 개인적인 의견 )

  • 난이도 : Level 0 ( ※ Min : 0, Max : 10 )
  • 풀이 시간 : 1분
  • 제출 횟수 : 1번 
  • 풀이 결과 : Pass

문제 설명

 PCCE 기출문제 중 처음으로 문제를 읽을 때 시간을 요하는 문제였다. 하지만 해석에 어려움은 전혀 없다. 그냥 표하나 만 보고 문제를 풀어도 된다. 쉽게 얘기하면 입력받은 문자에 마지막 4글자 단어만 확인 후 병과를 분류하는 것이다.

출처 : 프로그래머스

 code도 소문자라고 친절하게 알려주었기 때문에 대소문자 구분도 필요 없는 문제다. 또한 4 <=라는 말은 nullptr을 신경 쓰지 않고 마지막 4자리를 잘라서 사용하면 된다.

출처 : 프로그래머스


문제풀이

 예시 코드를 보면 이미 4자리를 자르는 구현은 되어 있다. substr을 사용하여 자르고 있기 때문이다. substr 사용법은 아래와 같다.

  • substr(문자열 시작 위치, 자르고자 하는 길이 )

 또한, switch문을 사용하여도 되지만 문제는 if문을 요구하는 문제로 그냥 도표에 맞는 문자열을 빈칸에 기재하면 되는 문제다.

#include <iostream>

using namespace std;

int main(void) {
    string code;
    cin >> code;
    string last_four_words = code.substr(code.size()-4, 4);
    if(last_four_words == "_eye"){
        cout << "Ophthalmologyc";
    }
    else if(last_four_words == "head"){
        cout << "Neurosurgery";
    }
    else if(last_four_words == "infl"){
        cout << "Orthopedics";
    }
    else if( last_four_words == "skin"){
        cout << "Dermatology";
    }
    else{
        cout << "direct recommendation";
    }
    return 0;
}

 

 나였으면 좋은 스관을 길러지기 위해 변수를 오른쪽에 비교 문자를 왼쪽에 위치하게 문제를 냈을 것 같은데, 다음부터는 그런 것도 고려하여 문제를 내면 좋을 것 같다. ( ※ 만약 신입 개발자 코딩 문제라면, 풀이 때 왼쪽에 있는 이유가 무엇일 것  같은지 또한 묻는다면 기초 지식을 파악하기 좋을 것 같다. )


결과

문제 링크 : 코딩테스트 연습 - [PCCE 기출문제] 4번 / 병과분류 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr