programmers Day13

Hwani·2024년 5월 18일

프로그래머스 DAY 1~25

목록 보기
13/51

문제 - 컨트롤 제트

풀이

class Solution {
    public int solution(String s) {
        String[] sArray = s.split(" ");
        int result = 0;
        for (int i = 0; i < sArray.length; i++) {
            if (sArray[i].equals("Z")) {
                result -= Integer.parseInt(sArray[i - 1]);
                continue;
            }
            result += Integer.parseInt(sArray[i]);
        }
        return result;
    }
}

설명

  • 문자열을 공백으로 분리한 String s를 배열에 담는다.
  • for문으로 배열에 담긴 값이 Z가 나온다면 Z 바로 직전의 요소를 result에서 뺀다. (제외한다)
  • 다른 값은 result에 더한 값을 리턴한다.

다른 풀이 - Stack 사용

public int solution (String s) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();

        for (String w : s.split(" ")) {
            if (w.equals("Z")) {
                stack.pop();
            } else {
                stack.push(Integer.parseInt(w));
            }
        }
        for (int i : stack) {
            answer += i;
        }
        return answer;
    }

설명

  • Z가 나온다면 stack 에서 제외한다.
  • Z가 아닌 다른게 나온다면 int로 변환하고 추가한다.
  • stack에 들어있는 값을 answer에 추가하여 리턴한다.

문제 - 배열 원소의 길이

풀이

class Solution {
    public int[] solution(String[] strlist) {
        int[] answer = new int[strlist.length];

        for (int i = 0; i < answer.length; i++) {
            answer[i] = strlist[i].length();
        }
        return answer;
    }
}

문제 - 중복된 문자 제거

풀이

import java.util.*;

class Solution {
    public String solution(String my_string) {
        HashSet<Character> seen = new HashSet<>();
        StringBuilder result = new StringBuilder();

        for (char c : my_string.toCharArray()) {
            if (!seen.contains(c)) {
                result.append(c);
                seen.add(c);
            }
        }
        
        return result.toString();
    }
}

설명

HashSet의 역할

HashSet은 중복을 허용하지 않는 데이터 구조이다. 이 문제에서 사용하면 쉽게 풀 수 있다.

  • for문으로 한글자씩 조회 후 Hashset에 그 글자가 없다면 result에 추가를 하고 이미 존재한다면 Hashset에 추가를 한다.
  • result를 리턴한다.

문제 - 삼각형의 완성 조건(1)

풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        
        Arrays.sort(sides);

        if (sides[2] < sides[0] + sides[1]) {
            answer = 1;
        } else {
            answer = 2;
        }
        
        return answer;
    }
}

설명

  • 삼각형이니까 배열에 3개의 값만 들어온다.
  • 그 배열을 정렬하고 가장 큰 값인 sides[2] 값이 sides[0] + sides[1] 의 길이보다 작으면 리턴 1 아니면 리턴 2
profile
개발자될거야

0개의 댓글