반응형
문제 설명
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n ≤ 100
입출력 예
n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]
입출력 예 설명
입출력 #1
10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.
입출력 #1
15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.
내가 푼 방법
class Solution {
public int[] solution(int n) {
int temp = 0;
int arraySize = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 != 0)
{
arraySize++;
}
}
int[] answer = new int[arraySize];
for (int i = 1; i <= n; i++) {
if (i % 2 != 0)
{
answer[temp] = i;
temp++;
}
}
return answer;
}
}
다시 보니 조금 미련하게 푼 것 같다.
처음에 애로사항은 배열의 크기가 정해져있지않아 Index 에러가 계속 발생했다.
배열은 크기가 정해져있기 때문에 배열의 크기를 먼저 지정한 후 문제를 풀었어야 했다.
배열의 크기를 지정하는 것은 for문을 돌릴 것이 아니라 n/2를 하면 된다는 것을 깨달았다.
n이 홀수라면 1을 더해주면 된다.
그래서 수정한 나의 두번째 답
class Solution {
public int[] solution(int n) {
int num = n % 2 == 0 ? n / 2 : (n / 2)+1;
int[] answer = new int[num];
int temp = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 != 0) {
answer[temp] = i;
temp++;
}
}
return answer;
}
}
이것도 마음에 안든다. 그치만 어쨌든 풀었다.
다른 사람들 풀이를 비교해보자.
음. ArrayList를 쓰거나 IntStream이라는 것을 쓴 것이 아니라면 그래도 나랑 다들 비슷하게 풀었다.
아직 컬렉션을 배우지 않았기 때문에 이것이 내 최선의 답변이라고 할 수 있겠다.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스>코딩테스트입문] 중앙값 구하기 (1) | 2024.07.19 |
---|