[20230102] 코딩테스트 스터디

6720·2023년 1월 2일
post-thumbnail

👨‍🏫 이번 목표

프로그래머스 코딩테스트 입문 Java로 Day 13 문자열, 배열, 사칙연산, 수학, 조건문

📒 문제 풀이 (Day 13 문자열, 배열, 사칙연산, 수학, 조건문)

컨트롤 제트

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

제한사항

  • 1 ≤ s의 길이 ≤ 200
  • 1,000 < s의 원소 중 숫자 < 1,000
  • s는 숫자, "Z", 공백으로 이루어져 있습니다.
  • s에 있는 숫자와 "Z"는 서로 공백으로 구분됩니다.
  • 연속된 공백은 주어지지 않습니다.
  • 0을 제외하고는 0으로 시작하는 숫자는 없습니다.
  • s는 "Z"로 시작하지 않습니다.
  • s의 시작과 끝에는 공백이 없습니다.
  • "Z"가 연속해서 나오는 경우는 없습니다.

입출력 예

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
class Solution {
    public int solution(String s) {
        int answer = 0;
        String[] arr = s.split("\\s");
        int sum = 0;
        
        for (int i = 0; i < arr.length; i++) {
            if (arr[i].equals("Z")) sum -= Integer.parseInt(arr[i-1]);
            else sum += Integer.parseInt(arr[i]);
        }
        
        answer = sum;
        return answer;
    }
}

배열 원소의 길이

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

제한사항

  • 1 ≤ strlist 원소의 길이 ≤ 100
  • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

입출력 예

strlistresult
["We", "are", "the", "world!"][2, 3, 3, 6]
["I", "Love", "Programmers."][1, 4, 12]
import java.util.*;

class Solution {
    public int[] solution(String[] strlist) {
        int[] answer = new int[strlist.length];
        
        for (int i = 0; i < strlist.length; i++) {
            answer[i] = strlist[i].length();
        }
        return answer;
    }
}

중복된 문자 제거

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

제한사항

  • 1 ≤ my_string ≤ 110
  • my_string은 대문자, 소문자, 공백으로 구성되어 있습니다.
  • 대문자와 소문자를 구분합니다.
  • 공백(" ")도 하나의 문자로 구분합니다.
  • 중복된 문자 중 가장 앞에 있는 문자를 남깁니다.

입출력 예

my_stringresult
"people""peol"
"We are the world""We arthwold"
class Solution {
		public String solution(String my_string) {
        String answer = "";
        
        for (int i = 0; i < my_string.length(); i++) {
						if (my_string.indexOf(my_string.charAt(i)) == i) answer += my_string.charAt(i);
				}
        
        return answer;
    }
}

indexOf(): 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환하며 만약 찾지 못했을 경우 “-1”을 반환함.

삼각형의 완성조건 (1)

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

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

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

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

입출력 예

sidesresult
[1, 2, 3]2
[3, 6, 2]2
[199, 72, 222]1
import java.util.*;

class Solution {
    public int solution(int[] sides) {
        int answer = 0, max = 0, sum = 0;
        
        Arrays.sort(sides);
        if (sides[2] >= sides[0] + sides[1]) answer = 2;
        else answer = 1;
        
        return answer;
    }
}

✨ 후기

1) 문제를 풀 때 조금은 쉽게 생각해도 될 것 같다. 계속 복잡하게 생각하려니깐 코드도 꼬이는 듯 하다.

2) 기록표

profile
뭐라도 하자

0개의 댓글