코딩테스트 DAY13

차준우·2022년 12월 23일
0
post-thumbnail

프로그래머스 코딩테스트 입문 - DAY13

😒컨트롤 제트

숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.

테스트 케이스

sresult
"1 2 Z 3"4
"10 20 30 40"100
"10 Z 20 Z 1"1
"10 Z 20 Z"0
"-1 -2 -3 Z"-3
import java.util.*;
class Solution {
    public int solution(String s) {
        int answer = 0;
        String[] strArray = s.split(" ");
        String[] tmpArray = {"0"};
        for(String str : strArray) {
            if(str.equals("Z")) {
                answer -=Integer.valueOf(tmpArray[0]);
            }
            else {
                answer += Integer.valueOf(str);
                tmpArray[0] = str;
            }
                
                
        }
        return answer;
    }
}

Z이전 숫자를 뺀 나머지 숫자를 더해 return하는 문제이다. 숫자가 나오면 임시배열에 저장해두고, Z를 만나면 임시배열 값을 다시 빼는 형태로 코딩했다.

😒배열 원소의 길이

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

테스트 케이스

letterresult
["We", "are", "the", "world!"][2, 3, 3, 6]
["I", "Love", "Programmers."][1, 4, 12]
class Solution {
    public int[] solution(String[] strlist) {
        int[] answer = new int[strlist.length];
        int i =0;
        for(String str:strlist) {
            answer[i] = str.length();
            i++;
        }
        return answer;
    }
}

배열 형태가 String인 경우에는 for(String str:strlist) 처럼 사용할 수 있다.
int형태이면 for(int i:Array)

😒중복된 문자 제거

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

테스트 케이스

my_stringresult
"aAb1B2cC34oOp"10
"1a2b3c4d123"16
import java.util.*;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.List;
class Solution {
    public String solution(String my_string) {
        String answer = "";
        List<String> obj = Arrays.asList(my_string.split(""));//리스트 형태로 바꿈
        List<String> newList = obj.stream().distinct().collect(Collectors.toList());//중복값 제거
        answer = String.join("", newList);//str형태로 바꿈
        return answer;
    }
}

주어진 my_string을 List로 바꾸고 중복값을 제거한 후, 다시 string형태로 바꿔 return했다.

😒삼각형의 완성조건 (1)

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

테스트 케이스

nresult
[1, 2, 3]2
[3, 6, 2]2
[199, 72, 222]1
class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        int res = 0;
        int max = 0;
        int cnt=0;
        if(sides[0]==sides[1]&&sides[1]==sides[2])
            return 1; // 정삼각형이므로 바로 return
        for(int i=0;i<sides.length;i++) {
            if(max<sides[i]) {
                max = sides[i];
            }
        }
        for(int i=0;i<sides.length;i++) {
            if(max!=sides[i]) {
                res += sides[i];
            }
            if(max==sides[i]){
                cnt++;
            }
        }
        if(cnt==2)
            return 1;
        if(res<=max)
            return 2;
        else 
            return 1;
    }
}

삼각형의 조건은 다음과 같다.
1. 위 문제처럼 가장 긴 변이 나머지 변을 더한 것보다 작은 경우
2. 이등변삼각형일 경우 (세 값이 모두 같을 때)
3. 정삼각형일 경우 (가장 큰 값 두개가 같을 때)

출처 : https://school.programmers.co.kr/learn/challenges
이미지 출처 : 작가 storyset 출처 Freepik

profile
개애발

0개의 댓글