728x90
알고리즘 첫 게시물..!
이전부터 백준에서 문제를 풀어오긴 했지만 내가 문제를 해결할 때의 생각흐름과 이유 등을 글로 풀면 좀 더 논리적이고 체계적인 공부가 될 것 같아 알고리즘 문제도 포스팅을 해보려고 한다.
1. 문제 해결 방법 구상하기
- 일단 입력을 받을 때 배열로 입력을 받아야 한다.
- 입력 받은 배열(즉 방번호)을 각 자리마다 어떤 숫자를 썼는 지 확인 후 그 숫자에 해당하는 int형 배열의 값을 +1 해준다.(크기가 10인 int 형 배열을 만들어 0~9 중 사용된 숫자의 배열에 +1해주기)
- 이 문제에서 가장 핵심이 되는 아이디어이다. 이것 때문에 처음에는 정말 복잡하게 문제를 구상하고 풀이했는데 다시 생각해보니 9와 6을 한 숫자로 생각해주면 된다는 것이 이 문제의 핵심이다.
2. 구상한 아이디어를 바탕으로 코딩하기
#include <iostream>
#include <cstring>
int main()
{
using namespace std;
char roomnum[8];
int number[10] = { 0 };
cin >> roomnum;
for (int i = 0; i < strlen(roomnum); i++)
number[roomnum[i] - '0']++;
number[6] += number[9];
number[6] = (number[6]+1) / 2; // (만약 숫자가 6과 9의 숫자가 3개이면 2개의 세트가 필요하므로)
number[9] = 0;
int max = 0;
for (int n = 0; n < 10; n++)
{
if (max < number[n])
{
max = number[n];
}
}
cout << max;
return 0;
}
첫 알고리즘 관련 포스팅이라 두서가 없지만 다음부터는 좀 더 깔끔하고 논리정연하게 포스팅을 해봐야겠다.
포스팅을 통해 내 생각을 표현함으로써 문제에 대한 복습도 되고 생각의 논리가 좀 더 정돈되는 효과가 있어 만족스럽다.
// 피드백 및 문제사항 제기 언제든지 감사히 받겠습니다.
728x90
'Computer Science > Algorithm' 카테고리의 다른 글
(C++) 백준 11729번 [하노이 탑 이동 순서] (0) | 2021.02.21 |
---|---|
(C++) 백준 15686번 [치킨 배달] (0) | 2021.02.21 |
(C++) 백준 2960번 [에라토스테네스의 체] (0) | 2021.02.18 |
(C++) 백준 2231번 [분해합] (0) | 2021.02.13 |
(C++) 백준 2798번 [블랙잭] (0) | 2021.02.12 |