Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- baekjoon
- 수학
- 자료구조
- C++
- 큐
- baekjoon problem solving
- 백준
- 최적제어
- 문자열
- 구현
- lqr
- 로봇공학
- 6.042j
- mathematics for computer science
- MIT opencourse
- 실버 5
- 전국 대학생 수학 경시대회
- std::sort
- 로보틱스
- HJB방정식
- 텔레스코픽로봇
- 다리로봇
- 대수경
- 실버 4
- LeggedRobot
- 정렬
- mit
- 논문리뷰
- BOJ
- 집합과 맵
Archives
- Today
- Total
서두르지 말고 쉬지 말자
백준 3052번 나머지(C++) 본문
문제 해결 전략: 먼저 42개의 요소를 가질 수 있는 배열을 각 요소를 모두 0으로 초기화해서 선언한다. 숫자를 10개 받고 그 수를 42로 나눠서 나온 수와 같은 배열의 요소자리의 수를 1증가 시킨다. 배열의 각 요소는 42로 나눴을 때 나올 수 있는 결과값을 상징한다. 따라서, 어떤 요소가 0보다 크면 이는 그 값이 나왔다는 뜻이다. 그 후 0이 아닌 요소의 수를 출력한다.
문제 해결 소감: 겹치는 부분을 어떻게 검출할까 생각했다. 처음에는 각 요소에 들어있는 수들을 일일이 비교할려 했는데 그렇게 하면 매우 복잡해졌고 겹치는 걸 어떻게 처리할지도 몰랐다. 그래서 다른 사람들 풀이를 봤다. 나는 배열에 수를 저장하고 무언가를 하려고 했는데 다른 사람들은 나온 빈도에 대한 배열을 만들어서 해결하는 걸 봤다. 큰 도움이 되었다. 이렇게 또 하나 알았다!
#include <iostream>
int arr[43] = {};
int cnt = 0, num = 0;
int main(void)
{
for (int i = 0; i < 10; i++)
{
std::cin >> num;
arr[num % 42] += 1;
}
for (int n : arr)
if (n > 0)
cnt++;
std::cout << cnt;
}반응형
'코딩 공부 > Baekjoon Problem Solving' 카테고리의 다른 글
| 백준 1018번 체스판 다시 칠하기(C++) (3) | 2025.01.07 |
|---|---|
| 백준 1436번 영화감독 숌(C++) (3) | 2024.11.27 |
| 백준 11720번 숫자의 합(C++) (1) | 2024.07.10 |
| 백준 2738번 행렬 덧셈(C++) (0) | 2024.05.25 |
| 백준 1002번 터렛(C++) (0) | 2024.05.04 |
