Q. 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
- left와 right를 매개변수로 하는 solution 함수를 정의한다.
- 구하는 값을 나타내는 변수 answer를 0으로 초기화하고 left부터 right까지 돌면서 각 수의 약수의 개수를 구한다 . 약수의 개수를 뜻하는 변수 count도 0으로 초기화한다.
- 1부터 i까지 돌면서 i를 j로 나누었을 때, 나머지가 0이면 j는 i의 약수라는 뜻이므로 count에 1을 더한다.
- for문을 다 돈 후에 count를 2로 나누었을 때, 나머지가 0이 아니면 약수의 개수가 홀수라는 뜻이므로 answer에서 i를 뺀 값을 answer라 하고 그렇지 않으면 answer에 i를 더한 값을 answer라 한다.
- for문을 다 돈 후에 최종적인 answer를 반환한다.


Q. 1937년에 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 -1을 반환해 주세요.
- 주어진 수를 나타내는 변수 num을 매개변수로 하는 solution 함수를 정의한다.
- 주어진 수가 1이면 0을 반환한다.
- count를 작업을 하는 횟수를 나타내는 변수라 하자.
- 주어진 수가 1이 아닐때까지 다음을 반복하게 한다.
- 만일 count가 500 이상이면 -1을 반환한다. 만일 num을 2로 나누었을 때 나머지가 0이면 num은 num을 2로 나눈 수라 한다. 그렇지 않으면 num을 num에 3을 곱하고 1을 더한 수라 한다. 그 후 count에 1을 더한다.
- num이 1이되면 count를 반환한다.


Q. 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는
(1칸, 1칸, 1칸, 1칸)
(1칸, 2칸, 1칸)
(1칸, 1칸, 2칸)
(2칸, 1칸, 1칸)
(2칸, 2칸)
의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.
- n=1일때부터 n=4까지 경우의 수를 나열해보면 규칙을 발견할 수 있다. n번째 경우의 수는 n-2번째 경우의 수와 n-1번째 경우의 수를 더한 값이다.
- n을 매개변수로 하는 solution함수를 정의한다.
- n이 1이면 1을 반환하고, 2이면 2를 반환한다.
- a를 1칸까지 가는 경우의 수인 1이라 하고, b를 2칸까지 가는 경우의 수인 2라 하자.
- 3부터 n까지 돌면서 a에는 기존의 b값을 대입하고 b에는 a와 b를 더한값을 1234567로 나눈 나머지를 대입한다. (숫자가 커지는 것을 방지하기위해 항상 1234567로 나눈 나머지를 대입하는 것)
- b를 반환한다.


'SWLUG(2025) > Algorithm' 카테고리의 다른 글
| [SV 6주차] 새, 초콜릿 자르기, 직사각형에서 탈출 (2) | 2025.08.12 |
|---|---|
| [SV 5주차] 숫자 문자열과 영단어, 소수 찾기, n진수 게임 (4) | 2025.08.12 |
| [SV 3주차] 가운데 글자 가져오기, 최소 직사각형, 피보나치 수 (3) | 2025.08.12 |
| [SV 2주차] 핸드폰 번호 가리기, 부족한 금액 계산하기, 짝지어 제거하기 (1) | 2025.08.11 |
| [SV 1주차] 없는 숫자 더하기, 문자열 내 p와 y의 개수, 숫자의 표현 (1) | 2025.08.11 |