본문 바로가기
코딩테스트

[프로그래머스>코딩테스트 입문] 짝수는 싫어

by moo-ti 2024. 7. 19.
반응형

문제 설명

정수 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이라는 것을 쓴 것이 아니라면 그래도 나랑 다들 비슷하게 풀었다.

아직 컬렉션을 배우지 않았기 때문에 이것이 내 최선의 답변이라고 할 수 있겠다.

 

 

반응형