반응형
방 번호
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다.
다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최소값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
문제 해결 과정:
9를 6으로 바꾸고 6에 경우에는 두개당 1카운트로 정의
나머지 숫자는 한 개당 1카운트
그 중에서 가장 높은 카운트가 필요한 세트의 갯수이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include<iostream> #include<string> #include<map> using namespace std; int main() { string snum; int cnt = 1; //6이나 9일때 카운트 int flag = 0; //6이랑 9가 카운트 될때 중복이 안되기위해 cin >> snum; char* a = new char[snum.length()]; int flagA[9]; //각 숫자에대한 카운트 fill_n(flagA, 9, 1); for (int i = 0; i < snum.length(); i++) { if (snum.at(i) == '9') { a[i] = '6'; } else { a[i] = snum.at(i); } } for (int i = 0; i < snum.length(); i++) { for (int j = i+1; j < snum.length(); j++) { if (a[i] == a[j] && a[i] == '6') { flag++; if (flag == 2) { flag = 0; cnt++; } break; } else if (a[i] == a[j]) { flagA[a[i] % 48]++; break; } } } int max = 0; for (int i = 0; i < 9; i++) { if (flagA[i] > max) { max = flagA[i]; } } if (cnt > max) { max = cnt; } cout << max; return 0; } | cs |
반응형
'알고리즘' 카테고리의 다른 글
2017_11_25 <백준> 1260번 DFS와 BFS (0) | 2017.11.25 |
---|---|
2017_11_24<백준>2504번 괄호의 값 (c++) (0) | 2017.11.24 |
2017_11_23 <백준> 1978번 소수 찾기 (0) | 2017.11.23 |
2017_11_21 2007년(규칙찾기) (0) | 2017.11.21 |
2017_11_20 부녀회장이 될테야(규칙 찾기) (0) | 2017.11.20 |