📝 [Lv0] 가장 큰 수 찾기
👀 문제 설명
정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
🚨 제한 사항
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array 원소 ≤ 1,000
- array에 중복된 숫자는 없습니다.
💻 입출력 예
[1, 8, 3] | [8, 1] |
[9, 10, 11, 8] | [11, 2] |
✨ 풀이 설명
가장 작은 수가 0이기 때문에 answer의 기본 값을 [0, 0] 으로 초기화해 주었다.
그다음, array의 값을 확인하며 해당 값이 answer의 값보다 크다면 해당 값과 인덱스 값으로 변경해 반환해 주었고, 아니라면 기존 answer을 그대로 반환해 주었다.
🕵️♂️ 코드
📝 [Lv0] 다음에 올 숫자
👀 문제 설명
🚨 제한 사항
- 2 < common의 길이 < 1,000
- -1,000 < common의 원소 < 2,000
- common의 원소는 모두 정수입니다.
- 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
- 등비수열인 경우 공비는 0이 아닌 정수입니다.
💻 입출력 예
[1, 2, 3, 4] | 5 |
[2, 4, 8] | 16 |
✨ 풀이 설명
앞부분 보단 뒷부분의 차이가 더 확실할 것 같다는 생각이 들어 뒷부분부터 계산을 했는데, 생각해 보면 등차나 등비 모두 뒤로 갈수록 수가 작아질 수도 있기 때문에 앞부분부터 계산했어도 상관없었겠다는 생각이 들었다.
풀이는 직관적으로 세 숫자 사이의 관계가 등차일 경우, 아닐 경우를 계산해 다음 수를 반환해 주었다.
🕵️♂️ 코드
📝 [Lv0] 문자열 밀기
👀 문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return 하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
🚨 제한 사항
- 0 < A의 길이 = B의 길이 < 100
- A, B는 알파벳 소문자로 이루어져 있습니다.
💻 입출력 예
"hello" | "ohell" | 1 |
"apple" | "elppa" | -1 |
"atat" | "tata" | 1 |
"abc" | "abc" | 0 |
✨ 풀이 설명
문자열을 밀다가 한 바퀴를 돌면 해당 문자가 없다는 뜻이 된다.
그래서 B 문자열을 두 번 반복하여 마지막 위치에 있을 때에도 해당 문자를 찾을 수 있도록 해준 다음,
이렇게 생긴 문자열에서 원문인 A의 위치를 찾아주었다.
문자열의 시작 위치를 찾는 indexOf를 통해 해당 위치를 반환해 주었다. (없을 경우는 -1을 반환함)
🕵️♂️ 코드
📝 [Lv0] 연속된 수의 합
👀 문제 설명
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return 하도록 solution함수를 완성해 보세요.
🚨 제한 사항
- 1 ≤ num ≤ 100
- 0 ≤ total ≤ 1000
- num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
💻 입출력 예
3 | 12 | [3, 4, 5] |
5 | 15 | [1, 2, 3, 4, 5] |
4 | 14 | [2, 3, 4, 5] |
5 | 5 | [-1, 0, 1, 2, 3] |
✨ 풀이 설명
전체가 등차가 1인 수열이라고 생각한 후, 가운데 숫자를 구해주었다. 홀수일 경우에는 중심 숫자를 먼저 추가해 주었다.
반복문을 통해 앞뒤로 1 낮은 수, 1 높은 수를 추가해 주었는데,
홀수일 경우에는 가운데 숫자를 이미 넣어주었기 때문에 반복문을 1부터 시작해 주었고,
짝수의 경우에는 중심 숫자가 정수가 아니기 때문에 0부터 시작해 주었다.
🕵️♂️ 코드
📝 [Lv0] 종이 자르기
👀 문제 설명
머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.

정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.
🚨 제한 사항
- 0 < M, N < 100
- 종이를 겹쳐서 자를 수 없습니다.
💻 입출력 예
2 | 2 | 3 |
2 | 5 | 9 |
1 | 1 | 0 |
✨ 풀이 설명
가로든 세로든 처음 자를 때에는 길이 - 1 만큼만 잘라주면 된다.
그 후, 잘린 종이를 기준으로 다른 방향으로 잘라줄 때는, 이미 잘린 종이마다 다른 방향으로 잘라주어야하기 때문에
(가로를 기준으로 생각한다면) 가로 자르는 횟수(M - 1) + 각각 잘린 종이마다 세로로 자르는 횟수(M개 * (N - 1))
즉,
(M - 1) + M * (N - 1) 라는 식이 나온다.
식을 풀어보면 M - 1 + M * N - M 이기 때문에 간단한 식으로 정리하면 아래와 같아진다.
🕵️♂️ 코드
'codingtest' 카테고리의 다른 글
[programmers] 가까운 수, 삼각형의 완성조건 (1), 중복된 문자 제거, k의 개수, A로 B 만들기 (0) | 2023.03.10 |
---|---|
[programmers] 인덱스 바꾸기, 영어가 싫어요, 대문자와 소문자, 암호 해독, 369게임 (0) | 2023.03.07 |
[programmers] 배열의 유사도, 문자열 계산하기, 편지, 약수 구하기, 한 번만 등장한 문자 (0) | 2023.03.06 |
[programmers] 문자열 안에 문자열, OX 퀴즈, 자릿수 더하기, n의 배수 고르기, 숫자 찾기 (0) | 2023.03.05 |
[programmers] 잘라서 배열로 저장하기, 7의 개수, 문자열 정렬하기(2), 세균 증식, 제곱수 판별하기 (0) | 2023.03.03 |