Day 15. ์ฝ๋ฉ ๊ธฐ์ด ํธ๋ ์ด๋(Java)
1. ์กฐ๊ฑด์ ๋ง๊ฒ ์์ด ๋ณํํ๊ธฐ 1
https://school.programmers.co.kr/learn/courses/30/lessons/181882
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
class Solution {
public int[] solution(int[] arr) {
int[] answer = arr.clone();
for(int i = 0; i < answer.length; i++) {
if(answer[i] >= 50 && answer[i] % 2 == 0) {
answer[i] /= 2;
} else if(answer[i] < 50 && answer[i] % 2 == 1) {
answer[i] *= 2;
}
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
answer = Arrays.stream(arr).map(i -> i >= 50 && i % 2 == 0 ? i / 2 : i < 50 && i % 2 == 1 ? i * 2 : i).toArray();
return answer;
}
}
2. ์กฐ๊ฑด์ ๋ง๊ฒ ์์ด ๋ณํํ๊ธฐ 2
https://school.programmers.co.kr/learn/courses/30/lessons/181881
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
class Solution {
public int solution(int[] arr) {
int answer = 0;
int count = 0;
int[] beforeArr = new int[arr.length];
while(count != arr.length) {
count = 0;
beforeArr = arr.clone();
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;
}
if(beforeArr[i] == arr[i]) {
count++;
}
}
answer++;
}
return answer - 1;
}
}
โผ ๋ฐฉ๋ฒ 2
class Solution {
public int solution(int[] arr) {
int answer = 0;
int count = 0;
int[] beforeArr = new int[arr.length];
while(true) {
boolean changed = false;
for(int i = 0; i < arr.length; i++) {
int temp = arr[i];
if(arr[i] >= 50 && arr[i] % 2 == 0) {
temp = arr[i] / 2;
} else if(arr[i] < 50 && arr[i] % 2 == 1) {
temp = arr[i] * 2 + 1;
}
if(arr[i] != temp) {
arr[i] = temp;
changed = true;
}
}
if(!changed) {
break;
}
answer++;
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 3
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
int answer = 0;
while(true) {
int[] afterArr = Arrays.copyOf(arr, arr.length);
for(int i = 0; i < arr.length; i++) {
if(afterArr[i] >= 50 && afterArr[i] % 2 == 0) {
afterArr[i] /= 2;
} else if(afterArr[i] < 50 && afterArr[i] % 2 == 1) {
afterArr[i] = afterArr[i] * 2 + 1;
}
}
if(Arrays.equals(arr, afterArr)) {
break;
}
arr = afterArr;
answer++;
}
return answer;
}
}
3. 1๋ก ๋ง๋ค๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/181880
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
class Solution {
public int solution(int[] num_list) {
int answer = 0;
for(int i = 0; i < num_list.length; i++) {
while(num_list[i] != 1) {
if(num_list[i] % 2 == 0) {
num_list[i] /= 2;
} else {
num_list[i] = (num_list[i] - 1) / 2;
}
answer++;
}
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
class Solution {
public int solution(int[] num_list) {
int answer = 0;
for(int num : num_list) {
while(num != 1) {
num /= 2;
answer++;
}
}
return answer;
}
}
4. ๊ธธ์ด์ ๋ฐ๋ฅธ ์ฐ์ฐ
https://school.programmers.co.kr/learn/courses/30/lessons/181879
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
class Solution {
public int solution(int[] num_list) {
int answer = num_list.length >= 11 ? 0 : 1;
for(int num : num_list) {
if(num_list.length >= 11) {
answer += num;
} else {
answer *= num;
}
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.Arrays;
class Solution {
public int solution(int[] num_list) {
int answer = 0;
if(num_list.length >= 11) {
answer = Arrays.stream(num_list).reduce(0, Integer::sum);
} else {
answer = Arrays.stream(num_list).reduce(1, (x, y) -> x * y);
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 3
import java.util.Arrays;
class Solution {
public int solution(int[] num_list) {
int answer = 0;
answer = num_list.length >= 11 ? Arrays.stream(num_list).sum() : Arrays.stream(num_list).reduce(1, (x, y) -> x * y);
return answer;
}
}
reduce() : stream์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์์๋ก ๋ง๋๋ ์์ ์ ์ํ
5. ์ํ๋ ๋ฌธ์์ด ์ฐพ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/181878
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
if(myString.toLowerCase().contains(pat.toLowerCase())) {
answer = 1;
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
if(myString.toLowerCase().indexOf(pat.toLowerCase()) != -1) {
answer = 1;
}
return answer;
}
}
indexOf() : ํน์ ๋ฌธ์๋ ๋ฌธ์์ด์์ ํด๋นํ๋ ๋ฌธ์์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐํํ๊ณ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ '-1'์ ๋ฐํํ๋ ๋ฉ์๋
lastIndexOf() : ํน์ ๋ฌธ์๋ ๋ฌธ์์ด์์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ๋ค์์ ๋ถํฐ ์ฐพ์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐํํ๊ณ ์ฐพ์ง ๋ชปํ์ ๊ฒฝ์ฐ '-1'์ ๋ฐํํ๋ ๋ฉ์๋