🗣️ 메모
로직이 맞는 것 같은데 아리송하다면 코드 진행 순서도 생각해 볼 것!
✏️ [짝수는 싫어요]
문제 설명
정수 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합니다.
🔥 TRY #1 실패
👉🏻 홀수만 들어갈 answer 배열에 넣을 값을 뽑기 위해 0부터 n/2의 버림한 값만큼 반복 돌리기
👉🏻 1~n까지의 수에서 홀수를 뽑기 위해 2로 나눈 나머지가 1인 수를 뽑아 배열에 넣으려고 시도함
import java.util.Arrays;
class Solution {
public int[] solution(int n) {
int[] answer = new int[(int)(Math.ceil((double)n/2))];
for(int j = 0; j < (int)(Math.ceil((double)n/2)); j++) {
for(int i = 1; i <= n; i++) {
if(i == 1 || i % 2 == 1) {
answer[j] = i;
}
}
}
return answer;
}
}
j가 0일 때 i를 모두 돌면서 마지막 홀수값만 들어감
일단 n/2에 버림한 숫자(=배열의 길이)는 잘 들어갔구나...이중 포문은 답이 아닌 듯하다
🔥🎉 TRY #2 [실행 결과]
👉🏻 for문은 1부터 n까지로만 돌리고 변수 하나를 0으로 초기화하여 선언
👉🏻 홀수가 나올 때 index값을 지정해서 for문의 i값을 넣고, 짝수가 나올 때는 변수에 ++을 한다면?
import java.util.Arrays;
class Solution {
public int[] solution(int n) {
int[] answer = new int[(int)(Math.ceil((double)n/2))];
int num = 0;
for(int i=1; i<=n; i++) {
if(i % 2 == 1) {
answer[num] = i;
} else{
num++;
}
}
return answer;
}
}
출처: 프로그래머스 코딩 테스트 연습,https://school.programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr