프로그래머스 (조건에 맞게 수열 변환하기 2)
public class problem400 {
class Solution {
public int solution(int[] arr) {
int answer = 0;
// arr배열을 nextArr 클론 (비교해야하고, 변하기때문에)
int[] nextArr = arr.clone();
while (true) {
boolean flag = true;
answer++; // 횟수 증가
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 50 && arr[i] % 2 == 0) {
nextArr[i] /= 2;
} else if (arr[i] < 50 && arr[i] % 2 != 0) {
nextArr[i] = nextArr[i] * 2 + 1;
}
// 바뀐 배열이랑 기존 배열이랑 같은지 비교
if (arr[i] != nextArr[i]) {
flag = false;
}
}
// 탈출 조건
if (flag) {
break;
}
arr = nextArr.clone(); // 변경된 배열을 arr에 클론
}
return answer - 1;
}
}
}
프로그래머스 (날짜 비교하기)
public class problem401 {
class Solution {
public int solution(int[] date1, int[] date2) {
for (int i = 0; i < date1.length; i++) {
if (date1[i] < date2[i]) {
return 1;
}
// date1의 배열중에 date2보다 큰 값이 있는경우
else if (date1[i] > date2[i]) {
return 0;
}
}
// 배열의 값이 동일할 경우
return 0;
}
}
}
프로그래머스 (문자열 묶기)
public class problem402 {
class Solution {
public int solution(String[] strArr) {
int answer = 0;
// strArr의 원소길이가 30이하임으로 배열의 갯수 할당
int[] arr = new int[31];
for (String str : strArr) {
// 배열의 길이에 대한 arr 배열 증가
arr[str.length()]++;
}
int max = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
answer = max;
}
return answer;
}
}
}
프로그래머스 (2의 영역)
import java.util.ArrayList;
import java.util.List;
public class problem403 {
class Solution {
public int[] solution(int[] arr) {
List<Integer> list = new ArrayList<>();
int start = 0;
int end = 0;
// start 인덱스를 찾습니다.
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 2) {
start = i;
break;
}
}
// end 인덱스를 찾습니다.
for (int i = arr.length - 1; i >= 0; i--) {
if (arr[i] == 2) {
end = i + 1;
break;
}
}
// start와 end의 값이 0일 경우 : 배열에 2가 없다.
if (start == 0 && end == 0) {
list.add(-1);
}
// start인덱스와 end 인덱스 만큼 값을 list에 담아준다.
for (int i = start; i < end; i++) {
list.add(arr[i]);
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
}
프로그래머스 (문자 개수 세기)
public class problem404 {
class Solution {
public int[] solution(String my_string) {
int[] arr = new int[52];
for (char ch : my_string.toCharArray()) {
if (ch >= 'A' && ch <= 'Z') {
arr[ch - 'A']++;
} else if (ch >= 'a' && ch <= 'z') {
// a의 위치 인덱스가 26부터 시작함으로 26을 더해준다.
arr[ch - 'a' + 26]++;
}
}
return arr;
}
}
}