Q. 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
- s를 매개변수로 하는 solution 함수를 정의한다.
- 문자열 s의 길이를 length라 한다.
- length를 // (정수 나눗셈 연산자)를 이용해 2로 나눈 값을 middle이라 한다.
- length가 짝수이면 s의 가운데 두글자를 반환하게 하고, length가 홀수이면 s의 가운데 한글자만 반환한다.


Q. 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.
|
명함 번호
|
가로 길이
|
세로 길이
|
|
1
|
60
|
50
|
|
2
|
30
|
70
|
|
3
|
60
|
30
|
|
4
|
80
|
40
|
가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다. 모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.
- sizes를 매개변수로 하는 solution 함수를 정의한다.
- 명함의 가로, 세로길이를 각각 w, h라 하고 max_w와 max_h의 초기값을 0으로 한다.
- for문을 돌면서 w,h 중에 더 큰 값을 w라 하고 w,h 중에 더 작은 값을 h라 한다.
- w, h에서 각각의 최댓값을 max_w, max_h라 한다.
- 모든 명함을 확인한 후, 구하는 지갑의 크기인 max_w * max_h 을 반환한다.


Q. 피보나치 수는 F(0) = 0, F(1) = 1일때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2)가 적용되는 수입니다. 예를 들어,
- F(2) = F(0) + F(1) = 0 + 1 = 1
- F(3) = F(1) + F(2) = 1 + 1 = 2
- F(4) = F(2) + F(3) = 1 + 2 = 3
- F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다.
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.
- n을 매개변수로 하는 solution 함수를 정의한다.
- 피보나치 수에서 F(0) = 0, F(1) = 1이므로 a, b의 초기값을 각각 0, 1로 한다.
- 2부터 n까지 for문을 돈다. (2부터 도는 이유는 F(0), F(1)은 a, b로 정의되어 있기 때문이다.)
- a에는 기존의 b값을 넣고, b에는 새로운 피보나치 수인 a+b를 저장하는데, b가 너무 커지지 않게 하기위해 1234567로 나눈 나머지를 저장한다. (1234567로 나누는 이유는 문제 조건 충족을 위해서이다.)
- 구하는 나머지인 b를 반환한다.


'SWLUG(2025) > Algorithm' 카테고리의 다른 글
| [SV 5주차] 숫자 문자열과 영단어, 소수 찾기, n진수 게임 (4) | 2025.08.12 |
|---|---|
| [SV 4주차] 약수의 개수와 덧셈, 콜라츠 추측, 멀리 뛰기 (2) | 2025.08.12 |
| [SV 2주차] 핸드폰 번호 가리기, 부족한 금액 계산하기, 짝지어 제거하기 (1) | 2025.08.11 |
| [SV 1주차] 없는 숫자 더하기, 문자열 내 p와 y의 개수, 숫자의 표현 (1) | 2025.08.11 |
| [6주차] 약수들의 합 (0) | 2025.08.11 |