150. 원하는 문자열 찾기
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
if(myString.toLowerCase().contains(pat.toLowerCase())){
answer = 1;
}
return answer;
}
}
<작성한 코드>
myString과 pat을 모두 toLowerCase()를 사용해서 소문자로 변경했다. 그 뒤에 contains을 사용해서 포함되는지 체크하고 포함된다면 answer에 1을 대입했다. 만약 포함되지 않는다면 0이 담긴 상태에서 반환될 것이다.
151. 길이에 따른 연산
class Solution {
public int solution(int[] num_list) {
int answer = 1;
if(num_list.length >= 11){
for(int i=0; i<num_list.length; i++){
answer += num_list[i];
}
} else{
for(int i=0; i<num_list.length; i++){
answer *= num_list[i];
}
}
if(num_list.length >= 11) answer--;
return answer;
}
}
<작성한 코드>
answer을 1로 초기화해 줬다. 그 뒤 배열의 길이가 11 이상이면 answer에 원소들의 합을 더해줬고, 아니라면 원소들의 곱을 넣어줬다. 마지막 if에서는 배열의 길이가 11이상이면 -1을 해줬다. 이유는 초기값이 1이기 때문에 1이 큰 상태이기 때문이다.
152. 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 == 1){
num_list[i]--;
}
num_list[i] /= 2;
answer++;
}
}
return answer;
}
}
<작성한 코드>
for문을 사용해서 배열의 길이까지 반복시켰다. for문 안에서는 while문을 사용해서 num_list [i]의 값이 1보다 크면 실행되게 하였다. if문으로 홀수면 num_list값에 -1을 해줬고 아래에서 /2를 계속해준다. 이때 answer도 1씩 증가해서 총횟수가 나오게 된다.
153. 조건에 맞게 수열 변환하기 2
import java.util.*;
class Solution {
public int solution(int[] arr) {
int answer = 0;
int cnt = 0;
int[] arr2 = new int[arr.length];
while(cnt != arr.length){
cnt = 0;
arr2 = 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(arr[i] == arr2[i]) cnt++;
}
answer++;
}
return answer-1;
}
}
<작성한 코드>
arr의 길이를 가진 arr2를 만들어줬다. while문안에서 arr2를 arr와 똑같은 값을 넣어주고 cnt도 0으로 계속 초기화되도록 설정했다. for문에서는 주어진 조건에 따라 /2 또는 *2+1을 해줬고 전부 이 값이 전의 arr2값과 같으면 cnt를 ++ 해주었다. 그 뒤 전체 for문이 끝날 때마다 answer++을 해주고 결괏값은 이전값을 반환해야 하기 때문에 -1을 하고 반환해 주었다.
154. 조건에 맞게 수열 변환하기 1
class Solution {
public int[] solution(int[] arr) {
int[] answer = new int[arr.length];
for(int i=0; i<arr.length; i++){
if(arr[i] >= 50 && arr[i] %2 == 0){
answer[i] = arr[i] /2;
} else if(arr[i] < 50 && arr[i] %2 != 0){
answer[i] = arr[i] *2;
} else{
answer[i] = arr[i];
}
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. answer의 길이도 arr와 동일하게 선언해 준 뒤 for문을 통해서 원소의 개수만큼 반복시켰다. 내부에선 if, else if, else를 사용해서 조건에 맞는 값을 answer에 그대로 대입하고 반환해 주었다.
155. 수열과 구간 쿼리 1
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for(int i=0; i<queries.length; i++){
int a = queries[i][0];
int b = queries[i][1];
for(int j=a; j<=b; j++){
arr[j] += 1;
}
}
return arr;
}
}
<작성한 코드>
2차원배열의 0,1번째의 값을 a, b로 지정해 줬다. 그 뒤 for문으로 arr [j]에 있는 요소들을 1씩 증가시키고 arr를 반환하였다.
156. n보다 커질 때까지 더하기
class Solution {
public int solution(int[] numbers, int n) {
int answer = 0;
for(int i=0; i<numbers.length; i++){
answer += numbers[i];
if(answer > n){
break;
}
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. 반복문으로 numbers의 배열을 차례대로 더해주고 if문을 사용해서 answer이 n보다 커지면 for문을 종료하였다.
157. 할 일 목록
import java.util.*;
class Solution {
public String[] solution(String[] todo_list, boolean[] finished) {
List<String> list = new ArrayList<>();
for(int i=0; i<todo_list.length; i++){
if(!finished[i]){
list.add(todo_list[i]);
}
}
String[] answer = new String[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
list를 하나 선언했다. 그리고 for문으로 원소의 길이만큼 반복시켜 주고 if문으로 finished [i]에 든 값이 false이면 list에 해당 todo_list [i] 값을 추가해 줬다. 두 번째 for문에서는 list안에 있는 원소들을 String형 배열 answer에 대입해 주고 반환하였다.
.
158. 5명씩
import java.util.*;
class Solution {
public String[] solution(String[] names) {
List<String> list = new ArrayList<>();
for(int i=0; i<names.length; i++){
if(i%5 == 0){
list.add(names[i]);
}
}
String[] answer = new String[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
list를 하나 만들어줬다. 그리고 for문으로 names의 길이만큼 반복시켰고 i가 5로 나눴을 때 0이 될 때 즉 0이거나 5의 배수일 때만 list에 그 값을 추가해 줬다. 그 뒤에 answer배열을 선언하고 값을 그대로 대입해 주고 반환하였다.
159. 홀수 vs 짝수
class Solution {
public int solution(int[] num_list) {
int answer = 0;
int sum1 = 0;
int sum2 = 0;
for(int i=0; i<num_list.length; i++){
if(i%2 == 0){
sum1 += num_list[i];
} else{
sum2 += num_list[i];
}
}
if(sum1 > sum2){
answer = sum1;
} else if(sum1 < sum2){
answer = sum2;
} else answer = sum1;
return answer;
}
}
<작성한 코드>
간단한 문제였다. 짝수들의 합은 sum1, 홀수들의 합은 sum2에 저장시킨뒤 if문으로 큰 값을 answer에 넣어줬다. 만약 값이 같으면 sum1을 넣어주고 반환하였다.
160. n개 간격의 원소들
import java.util.*;
class Solution {
public int[] solution(int[] num_list, int n) {
List<Integer> list = new ArrayList<>();
for(int i=0; i<num_list.length; i+=n){
list.add(num_list[i]);
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
간단한 문제다. for문으로 num_list의 길이까지 반복시켰다. i는 n만큼 증가시키면서 list에 추가해 줬다. 그리고 list의 값을 int형 배열 answer에 넣어주고 반환하였다.
161. n번째 원소까지
class Solution {
public int[] solution(int[] num_list, int n) {
int[] answer = new int[n];
for(int i=0; i<n; i++){
answer[i] = num_list[i];
}
return answer;
}
}
<작성한 코드>
간단한 문제다. n번째까지 넣어주면 된다. answer의 크기를 n만큼 설정해서 n번만큼 돌려주고 값을 넣어준뒤 반환하였다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (170~177번 문제풀이) (0) | 2023.10.18 |
---|---|
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (162~169번 문제풀이) (0) | 2023.10.18 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (140~149번 문제풀이) (0) | 2023.10.16 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (134~139번 문제풀이) (1) | 2023.10.16 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (127~133번 문제풀이) (0) | 2023.10.12 |
남건욱's 공부기록