[BOJ] C++ 1475 "방 번호" 문제 풀이 _ nov

    반응형

    #INFO

    난이도 : SILVER5

    출처 : 1475번: 방 번호 (acmicpc.net)


    #SOLVE

    아스키코드를 적절히 사용하면 풀이할 수 있는 간단한 배열 문제였다.

    0 ~ 9 번 방 까지의 번호의 개수를 저장할 room 배열을 선언한다.

    int room[10] = {0, };

    다음으로 문자열로 방번호를 입력받아 필요한 번호판의 개수를 room 배열에 저장한다. 단, 6번과 9번은 뒤집어서 사용할 수 있기에 따로 처리한다.

    	for (int i = 0 ; i < n.length() ; i++) {
    		room[n[i]-48]++;
    	}
    	
    	int sixNine = (room[6] + room[9] + 1) / 2;
    	room[6] = sixNine;
    	room[9] = sixNine;

    마지막으로 room 배열을 돌면서 가장 큰 값을 출력해 주면 된다.

    	int max = 0;
    	for (int i = 0 ; i < 10 ; i++) {
    		if (max < room[i])
    			max = room[i];
    	}
    	
    	cout << max << endl;

    #CODE

    #include <iostream>
    #include <string>
    using namespace std;
    
    int room[10] = {0, };
    
    int main() {
    	string n;
    	cin >> n;
    	
    	for (int i = 0 ; i < n.length() ; i++) {
    		room[n[i]-48]++;
    	}
    	
    	int sixNine = (room[6] + room[9] + 1) / 2;
    	room[6] = sixNine;
    	room[9] = sixNine;
    
    	int max = 0;
    	for (int i = 0 ; i < 10 ; i++) {
    		if (max < room[i])
    			max = room[i];
    	}
    	
    	cout << max << endl;
    	return 0;
    }

    반응형

    댓글

    Designed by JB FACTORY