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 |
Tags
- 리눅스마스터 1급 정리
- toCharArray
- 고잉버스
- 코딩테스트
- 백준 java
- java 백준 1차원 배열
- Linux
- Memoir
- 스프링 빈
- GoingBus
- 자바
- 월간코드챌린지
- 스프링 컨테이너
- 연습문제
- 프로그래머스
- 명령어
- Java
- 코테
- 반복문
- Kotlin
- JavaScript
- 리눅스마스터 3과목
- 자바스크립트 코딩의 기술
- 문자열
- 카카오
- 리눅스마스터1급
- 개발자 회고록
- 백준 javascript
- 리눅스
- map
Archives
- Today
- Total
hoon's bLog
Java 프로그래머스 약수의 개수와 덧셈 자바 본문
반응형
문제출처 : https://programmers.co.kr/learn/courses/30/lessons/77884
[나의 풀이]
- 주어진 left, right 값으로 배열의 길이 설정
- 반복문을 이용하여 각 숫자의 약수를 리스트에 담아, return 변수에 약수의 개수의 홀짝 여부를 판별하여 범위 내 숫자 +/-
import java.util.ArrayList;
class Solution {
public int solution(int left, int right) {
int answer = 0;
int[] rangeNum = new int[right - left + 1];
for(int i=0; i < rangeNum.length; i++){
rangeNum[i] = left + i;
//범위내 숫자의 약수를 저장할 ArrayList 선언
ArrayList<Integer> arrList = new ArrayList<>();
for(int j=1; j <= rangeNum[i]; j++){
if(rangeNum[i]%j == 0)
arrList.add(j); //list에 약수 저장
}
//list의 크기로 홀/짝 판단을 하여 return 변수에 값을 +/-하여 바로 저장
answer = (arrList.size()%2 == 0 ? answer+rangeNum[i] : answer-rangeNum[i]);
}
return answer;
}
}
[다른사람의 풀이-1]
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) answer -= i;
//제곱수가 아닌 경우 약수의 개수가 짝수
else answer += i;
}
return answer;
}
}
[다른사람의 풀이-2]
class Solution {
public int solution(int left, int right) {
int answer = 0;
//애초에 left, right로 범위를 정해 반복문
for(int i = left; i<=right; ++i){
int count = 0;
for(int j=1; j<=i; ++j)
if(i%j == 0) count++;
if(count%2 == 0)
answer += i;
else
answer -= i;
}
return answer;
}
}
[정리]
- 이전에 올렸던 3진법뒤집기에서도 사용되었던 input 값으로 범위 지정하기를 또 깜빡했다...
- 제곱수를 이용하여 약수의 개수 판별을 통해 해당 숫자의 약수를 각각 구하는 수고를 덜하는 아이디어는 정말 대단하다!..
개인피셜 난이도 : ★☆☆☆☆
불필요한 라이브러리를 추가할 필요없이 조금만 더 생각해보면 될 것을...
심지어 다른 사람들의 코드를 리뷰했음에도 불구하고 또 내 방식에 빠져 버렸다...
3번의 실수는 없다.
다음번엔 꼭! 이런 방식들을 이용해서 코딩해봐야겠다!!
(3번 실수는 정말 사람아님 퉤퉤퉤!!!!!!!!)
끝!
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
Java 프로그래머스 최소 직사각형 자바 (0) | 2022.06.14 |
---|---|
Java 프로그래머스 나머지가 1이 되는 수 찾기 자바 (0) | 2022.06.13 |
Java 프로그래머스 없는 숫자 더하기 자바 (0) | 2022.06.12 |
Java 프로그래머스 3진법 뒤집기 자바 (0) | 2022.06.11 |
Java 프로그래머스 음양 더하기 자바 (0) | 2022.06.11 |