1475

#include <stdio.h>
#include <string.h>

// 6을 9로 or 9를 6으로 바꿔서 생각하는 함수
int SNToNS(int curNum, char num, 
    int count, int *arr){
    // 만약 현재 번호가 6 또는 9인데,
    // 9또는 6에 인덱스 값이 count보다 작으면 
    // 9또는 6에 인덱스 값을 ++
    if((curNum == num)&&(*(arr) < count)){
        *(arr) += 1;
        return 1;
    }
    return 0;
}
int main(void){
    // 방번호 입력 받기
    char roomNum[1000000];
    scanf("%s", &roomNum);
    
    int arr[10] ={0}, count = 1;

    // 길이 찾기
    int len = strlen(roomNum);
    for(int i = 0; i < len; i++){
        // 번호 정수값으로 변환
        char num = roomNum[i]-48;

        // 만약 현재 번호의 인덱스 값이 count보다 작으면 
        // 현재 번호 인덱스 값을 ++
        if(arr[num] < count){
            arr[num]++;
        }
        // 만약 현재 번호의 인덱스 값이 count보다 클 때
        else {
            // 6을 9로 하거나 9를 6으로 했을 경우
            int is_sntosn = 0;
            is_sntosn += SNToNS(6 , num, count, &arr[9]);
            is_sntosn += SNToNS(9 , num, count, &arr[6]);

            // 만약 하나라도 바꿨으면 continue;
            if(is_sntosn){
                continue;
            }

            // 현재 번호의 인덱스 값을 늘리고
            // count도 늘리기
            arr[num]++;
            count++;
        }
    }

    // 출력
    printf("%d", count);
    return 0;
}

'백준' 카테고리의 다른 글

[ 백준 / C ] 20233번 : Bicycle  (0) 2025.10.28
[ 백준 / C ] 6810번 : ISBN  (0) 2025.10.27
[ 백준 / C ] 2037번 : 문자메시지  (0) 2025.10.23
[ 백준 / C ] 1233번 : 주사위  (0) 2025.10.22
[ 백준 / C ] 5102번 : Sarah's Toys  (0) 2025.10.21

+ Recent posts