Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- MYSQL
- 개인프로젝트
- EC2
- 남궁성과 끝까지 간다
- 스파르타코딩클럽
- 항해99
- CentOS
- 프로그래머스
- Spring Security
- visualvm
- 데이터베이스
- JavaScript
- JWT
- 카프카
- @jsonproperty
- AWS
- 시큐리티
- WEB SOCKET
- Spring
- 패스트캠퍼스
- Kafka
- 쇼트유알엘
- 웹개발
- DB
- docker
- 생성자 주입
- java
- emqx
- 스프링의 정석
- 스웨거
Archives
- Today
- Total
Nellie's Blog
[프로그래머스] 스킬 체크 테스트 level1 - 나누어 떨어지는 숫자 배열 본문
728x90
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
예시
arr | divisor | return |
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
코드 해석 및 전체 코드
1. 배열 길이를 구하기
2. 나누어 떨어지는 값이 없으면 배열 값 -1 반환
3. 구한 배열 길이 만큼 배열 선언
4. 나누어 떨어지는 값 배열에 저장
5. 정렬
class Solution {
public int[] solution(int[] arr, int divisor) {
int cnt = 0; // ★ cnt변수를 설정하여 나누어떨어지는수가 몇개있는지 체크
for(int i = 0; i < arr.length; i++){
if(arr[i] % divisor == 0) cnt++;
}
if(cnt == 0) { //★ 하나도 나누어떨어지는 수가 없으면 -1리턴! 배열은 {}안에 넣어줘야해!!
int[] answer = {-1};
return answer;
}
int[] answer = new int[cnt]; //★ answer배열을 cnt개수만큼 새로 만들기!!
for(int i = 0, j = 0; i < arr.length; i++){ //★ 나누어떨어지는수가 있으면 answer배열에 담기!
if(arr[i] % divisor == 0) answer[j++] = arr[i];
}
for(int i = 0; i < cnt - 1; i++){ //★ 마지막으로 정렬!
for(int j = 0; j < cnt - 1 - i; j++){
if(answer[j] > answer[j +1]){
int temp = answer[j]; //★ temp변수를 설정해서 자리를 바꿔주도록 할 것!
answer[j] = answer[j+1];
answer[j+1] = temp;
}
}
}
return answer;
}
}
첫번째 도전 코드
1. ArrayList 선언 및 divisor로 나누어 떨어지는 값 추가
2. 배열 길이 구하기
3. AraayList 값 배열에 저장
4. 배열 정렬
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < arr.length; i++){
if(arr[i] % divisor == 0) list.add(arr[i]);
}
int length = list.size() != 0 ? list.size() : 1;
int[] answer = new int[length];
if(length == 1) {
answer[0] = -1;
return answer;
}
for(int i = 0, j = 0; i < length; i++){
answer[i] = list.get(i);
}
for(int i = 0; i < length - 1; i++){
for(int j = 0; j < length - 1 - i; j++){
if(answer[j] > answer[j +1]){
int temp = answer[j];
answer[j] = answer[j+1];
answer[j+1] = temp;
}
}
}
return answer;
}
}
'Back-end > Algorithm' 카테고리의 다른 글
[항해99] Java 과제 - 알고리즘 첫날/ 기본3문제 (0) | 2022.11.18 |
---|---|
[프로그래머스][코딩테스트 입문] 각도기 (0) | 2022.11.09 |
최대값과 최소값의 합 구하기 (0) | 2022.10.20 |
[java] 사각형 클래스를 상속받아 객체지향구조 구현 (4) | 2022.09.05 |
[java] Scanner로 입력받고 별찍기 (3) | 2022.09.05 |