[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