반응형
안녕하세요. BlockDMask 입니다.
이번 포스트는 7월 20일짜 커버입니다.
0. 제목
백준 1475 방 번호
BOJ 1475 방 번호
1. 문제설명
숫자가 1,000,000보다 작은 자연수가 입력이 되면,
그것을 인식하기위한
0~9가지의 열가지 숫자가 있는 플라스틱 숫자 셋트가 몇개가 필요한지.
9는 뒤집어서 6으로 사용 가능하다.
2. 풀이과정
총 3가지 방법으로 풀어봤습니다.
T1) 입력을 int 타입의 변수로 받고 배열을 이용하여 계산 한 경우
T2) 입력을 int 타입의 변수로 받고 STL map 컨테이너를 이용하여 계산 한 경우
T3) 입력을 string 타입으로 받고 계산 한 경우
3. 코드
T1) 입력을 int 타입의 변수로 받고 배열을 이용하여 계산 한 경우
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include<iostream> #include<algorithm> using namespace std; int main(void){ int n; cin >> n; int arr[10] = {0}; while(true){ arr[n%10]++; if(n/10 == 0) break; n/=10; } int num =0; for(int i=0; i< 10; i++){ if(i!=9 && i!=6) num = max(num, arr[i]); } cout << max(num, (arr[6] + arr[9] + 1) /2); return 0; } | cs |
T2) 입력을 int 타입의 변수로 받고 STL map 컨테이너를 이용하여 계산 한 경우
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 | #include<iostream> #include<map> #include<algorithm> using namespace std; int main(void){ int n; cin >> n; //map 선언 Key 는 숫자, value는 그 숫자의 갯수. map<int, int> m; map<int, int>::iterator iter; //반복자 선언 while(1){ if((iter = m.find(n%10)) != m.end()){ //존재하면. iter->second += 1; }else{ m.insert(pair<int, int>(n%10, 1)); } if(n / 10 == 0) break; n /= 10; //1의 자리를 없앤다. } int num =0; for(iter = m.begin(); iter != m.end(); iter++){ if(iter->first != 6 && iter->first != 9) num = max(num, iter->second); } int tmp = (m.find(6)->second + m.find(9)->second + 1) / 2; cout << max(num, tmp); return 0; } | cs |
T3) 입력을 string 타입으로 받고 계산 한 경우
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include<iostream> #include<string> #include<algorithm> using namespace std; int main(void){ string str; cin >> str; int arr[10] = {0}; for(int i=0; i< str.size(); i++){ arr[str[i] - '0']++; } int num =0; for(int i=0; i< 10; i++){ if(i!=9 && i!=6) num = max(num, arr[i]); } cout << max(num, (arr[6] + arr[9] + 1) /2); return 0; } | cs |
4. 인증
T1) 입력을 int 타입의 변수로 받고 배열을 이용하여 계산 한 경우
T2) 입력을 int 타입의 변수로 받고 STL map 컨테이너를 이용하여 계산 한 경우
T3) 입력을 string 타입으로 받고 계산 한 경우
출처 : https://www.acmicpc.net/problem/1475
감사합니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[CodeGround] 하노이 타워(Hanoi Tower) (0) | 2017.08.07 |
---|---|
[CodeGround] 극단적인 수 (0) | 2017.08.04 |
[백준 1929] 소수 구하기 (에라토스테네스의 체) (1) | 2017.08.03 |
[백준 1181] 단어정렬 (vector, array) (1) | 2017.08.02 |
[백준 10828] 스택 (C, C++ stack) (4) | 2017.08.01 |
[백준 11050] 이항계수 1 (반복, 재귀) (0) | 2017.07.31 |
[백준 1157] 단어 공부 (map) (1) | 2017.07.29 |
[백준 2750] 수 정렬하기 (버블정렬, 삽입정렬) (0) | 2017.07.28 |