| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JWT
- ORM
- array
- spring
- 백엔드스쿨
- 자료구조
- 제로베이스
- Java
- QueryDSL
- restTemplate
- 개발자
- 백준
- spring boot
- 스프링부트
- TestCode
- SpringBoot
- error
- 백엔드공부
- 백엔드
- SpringSecurity
- 프로그래머스
- queue
- 서버
- actuator
- 컴퓨터 구조
- 컴퓨터 공학
- 연관관계
- 핵심가이드
- JPA
- LinkedList
Archives
- Today
- Total
be_better
[프로그래머스] 나누어 떨어지는 숫자 배열 본문
목차
💎 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12910
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝 문제

✍🏻 입력 & 출력

🤔 풀기 전에 생각하기
answer로 반환해야 할 배열의 크기가 처음부터 정해져있지 않은 문제이기 때문에
배열의 크기를 먼저 정해주고 배열을 선언해야 한다.
for 문으로 입력받은 arr배열을 처음부터 돌면서 arr의 원소가 divisor의 배수라면 answer배열의 크기 1 증가
이 때, 정해진 크기가 0이라면 -1만 갖고있는 길이 1짜리의 배열 return
0이 아닌 크기가 정해졌으면 answer 배열을 선언하고 또 다른 for 문으로 마찬가지로 divisor의 원소라면 answer 배열에 삽입
Arrays.sort()로 오름차순 정렬 후 return
크기를 정해줘야 하는 배열의 단점 때문에 ArrayList를 이용해 문제를 풀 수도 있겠다.
대신 return type이 int[] 배열이기 때문에 ArrayList를 int[]로 형변환 해줘야 한다.
✨ 풀이
🧶 배열을 이용한 풀이
import java.util.Arrays;
public class Solution {
public int[] solution(int[] arr, int divisor) {
int numLength = 0; // 배열의 크기를 정해줄 numLength
for (int i : arr) {
if (i % divisor == 0) {
numLength++; // divisor의 배수가 있다면 numLength + 1;
}
}
/*
* numLength가 0이라는 뜻은 divisor의 배수가 없다는 뜻
* new int[]{-1} 배열을 만들어서 바로 return
*/
if (numLength == 0) {
return new int[]{-1};
}
int[] answer = new int[numLength]; // 정답배열은 numLength 크기로 초기화
int j = 0;
for (int i : arr) {
if (i % divisor == 0) {
answer[j] = i;
j++;
}
}
Arrays.sort(answer); // 배열 정렬
return answer;
}
}
🧶 ArrayList를 이용한 풀이
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> answer = new ArrayList<>();
// for-each로 divisor의 배수 일 때 answer.add()
for (int i : arr) {
if (i % divisor == 0) {
answer.add(i);
}
}
// answer에 아무 원소도 들어가지 않았을 때 add(-1) 후에
// 배열 타입으로 변환 후 리턴
if (answer.size() < 1) {
answer.add(-1);
return answer.stream().mapToInt(i -> i).toArray();
}
// List 오름차순 정렬
Collections.sort(answer);
return answer.stream().mapToInt(i -> i).toArray();
}
}
배열을 이용한 풀이가 빠르게 동작한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 프로세스 (0) | 2023.08.11 |
|---|---|
| [프로그래머스] 기능개발 (0) | 2023.08.08 |