[백준 BOJ] 17863번 FYI (C++/cpp)

2025. 12. 18. 00:38PS (Program Solving)/BOJ (백준)

문제 설명

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

 

백준 BOJ 17863번 FYI 문제 사진1
백준 BOJ 17863번 FYI 문제 사진2

 

접근 방법 - 기초적인 문자열 값 판별 문제

백준의 17863번 문제는 문자열의 값 판별을 통해 비교적 쉽게 해결할 수 있는 문제이다.

해당 문제는, 입력으로 주어지는 전화번호가 상담원에게 연결되는 번호인지를 판별하여 이를 정답으로 출력하면 되는 문제이다.

이때, 앞자리 번호(전화번호 중 처음 3자리)가 "555"로 구성된 전화번호의 경우에는 담당 상담원에게 연결된다는 점이 문제 지문 상에 명시되어 있으므로 함께 참고해야 한다.

영어로 작성된 문제 지문에 대한 해석본은 아래 링크에 있으니, 문제 해결할 시 함께 참고하면 좋을 것이다.

https://www.acmicpc.net/board/view/86036

 

문제에 명시되어 있는 대로 7자리로 주어지는 전화번호 중 앞의 3자리가 모두 숫자 5로 구성되어 있는지만 잘 확인하면 된다.

이때 입력이 모두 숫자로 주어지기는 하나, 필자는 각 자리의 숫자 값에 보다 편리하게 접근하기 위해 문자열로 입력을 받아 연산을 진행하였다.

굳이 더 설명할 내용은 없는 듯 해보이나 보다 자세한 내용을 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 전화번호(tel)를 입력받는다.

(앞서 설명한 대로, 각 위치의 숫자값에 더 편리하게 접근하기 위해 문자열 형태로 입력받는다.)

 

2) i의 값을 0에서 시작하고 3 이전까지 하면서, 반복문을 수행하여 아래의 연산을 취한다.

- i번째 위치의 tel 숫자값이 '5' 값을 가지는지 확인하도록 한다.

만약 '5'가 아닌 다른 값을 갖는다면, 이는 상담원으로 연결되는 전화번호가 아님을 뜻한다. 따라서 이 경우에는 그 즉시 "NO"를 정답으로 출력한 뒤 실행을 바로 종료하도록 한다.

 

3) 2)에서 실행이 종료되지 않았다면, 해당 번호는 상담원으로 연결되는 전화번호임을 의미한다.

이 경우에는 "YES"를 정답으로 출력한 뒤 실행을 종료하도록 한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 17863번 코드
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);   cout.tie(NULL);
    
    string tel;
    cin >> tel;

    for (int i = 0; i < 3; i++) {
        if (tel[i] != '5') {
            cout << "NO" << endl;
            return 0;
        }
    }

    cout << "YES" << endl;
}

 

제출 결과

백준 BOJ 17863번 FYI 문제 C++ 제출 결과

(2023.05.23 백준 17863번 문제 제출 결과)