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
- Matrix
- dynamic programming
- Class
- Number Theory
- Stack
- Data Structure
- bit manipulation
- Math
- string
- java
- hash table
- Method
- sorting
- Binary Tree
- 코테
- implement
- array
- SQL
- geometry
- 코딩테스트
- greedy
- Counting
- database
- 파이썬
- 구현
- Tree
- two pointers
- Binary Search
- simulation
- 자바
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.0] 조건에 맞게 수열 변환하기 2 본문
1. Input, Output, Example
arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더한다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재한다.
- 이러한 x 중 가장 작은 값을 반환
2. Constraint
1) 1 ≤ arr의 길이 ≤ 1,000,000
2) 1 ≤ arr의 원소의 값 ≤ 100
3. Code
1) 첫 코드(2023/05/01)
class Solution {
public int solution(int[] arr) {
int answer = 0;
boolean find = false;
while(!find){
answer++;
int[] copied = new int[arr.length];
System.arraycopy(arr, 0, copied, 0, arr.length);
for(int i=0 ; i<arr.length ; i++){
if(arr[i]>=50 && arr[i]%2==0)
arr[i] /= 2;
else if(arr[i]<50 && arr[i]%2==1)
arr[i] = arr[i]*2 +1;
}
boolean check = true;
for(int i=0 ; i<arr.length ; i++)
check = check && (arr[i]==copied[i]);
if(check) find = true;
}
return answer-1;
}
}
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[프로그래머스/Lv.0] 이차원 배열 대각선 순회하기 (0) | 2023.05.01 |
---|---|
[프로그래머스/Lv.0] 정사각형으로 만들기 (0) | 2023.05.01 |
[프로그래머스/Lv.0] 2의 영역 (0) | 2023.05.01 |
[프로그래머스/Lv.0] 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2023.05.01 |
[프로그래머스/Lv.0] 문자 개수 세기 (0) | 2023.05.01 |