C++/코드트리

[코드트리] 정보에 따른 숫자 2

sondiaa 2023. 8. 8. 00:35

https://www.codetree.ai/missions/5/problems/number-based-on-information-2?utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

양 옆 칸을 하나씩 검사해서 S와 N의 유무를 체크하는 식으로 작성하였다.

입력으로 받은 S와 N의 위치를 배열에 저장해두고 특정 위치에서 모든 값과의 거리를 비교하는 완전탐색을 통해서도 풀이가 가능하다.

 

getN과 getS로 나눠서 작성하였는데 사실상 차이가 없는 수준이기에 하나의 함수로 작성하고 N과 S를 입력값으로 받아 구분주어도 될 것 같다.

#include <iostream>
using namespace std;
int t, a, b, x;
char alp, map[1001];

int getN(int index){
    for(int i=0; i<=1000; i++){
        if(i+index > 1000 && index - i < 0) continue;
        if(map[i+index] == 'N' || map[index - i] == 'N')
            return i;
    }

    return -1;
}

int getS(int index){
    for(int i=0; i<=1000; i++){
        if(i+index > 1000 && index - i < 0) continue;
        if(map[i+index] == 'S' || map[index - i] == 'S')
            return i;
    }

    return 21e8;
}

int main() {
    cin >> t >> a >> b;
    for(int i=0; i<t; i++){
        cin >> alp >> x;
        map[x] = alp;
    }

    int answer = 0;
    for(int i=a; i<=b; i++){
        int disN = getN(i);
        int disS = getS(i);

        if(disN >= disS) {
            answer++;
            
        }
    }

    cout << answer;
    return 0;
}