-
1288. 새로운 불면증 치료법코딩 테스트/SW Expert Academy 2021. 8. 6. 20:06
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 이해
-> 양을 세는데 N의 배수 번호인 양을 센다.
-> 즉, 첫 번째에는 N번 양을 세고, 두 번째에는 2N번 양, ..., k번째에는 kN번의 양을 센다.
-> 이전에 셌던 번호들의 각 자리수에서 0에서 9까지의 모든 숫자를 보는 것은 최소 몇 번 양을 센 시점인지 구하는 프로그램
-> 예시로 N = 1295 일 때,
-> 첫 번째로 N = 1295번 양을 센다. 현재 본 숫자는 1, 2, 5, 9이다.
-> 두 번째로 2N = 2590번 양을 센다. 현재 본 숫자는 0, 2, 5, 9이다.
-> 현재까지 본 숫자는 0, 1, 2, 5, 9이다.
-> 세 번째로 3N = 3885번 양을 센다. 현재 본 숫자는 3, 5, 8이다.
-> 현재까지 본 숫자는 0, 1, 2, 3, 5, 8, 9이다.
-> 네 번째로 4N = 5180번 양을 센다. 현재 본 숫자는 0, 1, 5, 8이다.
-> 현재까지 본 숫자는 0, 1, 2, 3, 5, 8, 9이다.
-> 다섯 번째로 5N = 6475번 양을 센다. 현재 본 숫자는 4, 5, 6, 7이다.
-> 현재까지 본 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9이다.-> 5N번 양을 세면 0에서 9까지 모든 숫자를 보게 되므로 민석이는 양 세기를 멈춘다.
-> 최소 몇 번 양을 세었을 때 이전에 봤던 숫자들의 자릿수에서 0에서 9까지의 모든 숫자를 보게 되는지 출력한다.
문제 주의
-> 첫 번째 줄의 테스트 케이스의 수가 주어진다.-> 각 테스트 케이스의 첫 번째 줄에는 N (1 ≤ N ≤ 10⁶) 이 주어진다.
// https://rueki.tistory.com/115
// 위 링크를 코드리뷰 형식으로 문제 풀이
문제 풀이
-> answer 변수는 0부터 9까지 배열이 다 찼을 때 수를 나타냄
-> count 변수는 0부터 9까지 배열이 다 찼음을 나타냄
-> temp = testCase * j;
이 구문은 n = 1295, 2n = 2590, 3n = 3885 ... 5n = 6475 를 나타내는 구문
이 변수를 % 10으로 나눠 자리수를 파악하는 용도로 쓰임
-> while 반복문을 통해 0부터 9까지의 배열에 temp 자리수 변수를 넣는 반복문
0부터 9까지 배열에 들어가는 수는 최대 1이며, 이는 이미 본 숫자를 나타냄
#include <iostream> using namespace std; int main() { int testCaseCount, testCase; cin >> testCaseCount; for (int i = 0; i < testCaseCount; i++) { cin >> testCase; int array[10] = { 0 }; int answer, count = 0; for (int j = 0; count < 10; j++) { int temp = testCase * j; answer = temp; while (temp != 0) { int current = temp % 10; if (array[current] == 0) { count++; array[current]++; } temp /= 10; } } cout << "#" << i + 1 << " " << answer << endl; } return 0; }
'코딩 테스트 > SW Expert Academy' 카테고리의 다른 글
1976. 시각 덧셈 (0) 2021.07.26 1204. 최빈수 구하기 (0) 2021.07.03 1966. 숫자를 정렬하자 (0) 2021.06.30 1926. 간단한 369게임 (0) 2021.06.29 1928. Base64 Decoder (0) 2021.06.28