[프로그래머스] JAVA

설하나·2023년 10월 10일
0

알고리즘

목록 보기
19/22

1. 문자열 섞기

[문제 상황]

길이가 같은 두 문자열 str1과 str2가 주어집니다.

두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.

단, str1의 길이 = str2의 길이

[풀이 코드]

class Solution {
    public String solution(String str1, String str2) {
        String answer = "";
        for(int i=0; i<str1.length(); i++){
            answer += str1.substring(i,i+1);
            answer += str2.substring(i,i+1);
        }
        return answer;
    }
}

[문제 해결 방향]

Scanner를 통해서 서로 번갈아가면서 한번씩 등장하는 문자열을 받은 후,
str1과 str2의 길이가 동일하기 때문에, for문을 str1(혹은 str2)의 길이만큼 돌면서 answer에 각각 계속 더해주면 해결된다.

2. 문자 리스트를 문자열로 변환하기

[문제 상황]

문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.

[풀이 코드]

class Solution {
    public String solution(String[] arr) {
        String answer = "";
        answer = String.join("",arr);
        return answer;
    }
}

[문제 해결 방향]

Scanner를 통해서 문자들이 담겨있는 배열을 받은 후,
String의 join매서드를 사용해서 arr을 ""으로 합쳐주었다.

[정리]

  • join()은 구분자와 합칠 문자열을 매개변수로 받는다. 반대로 구분자를 기준으로 나누는 매서드인 split()이 있다.

3. 문자열 곱하기

[문제 상황]

문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.

[풀이 코드]

class Solution {
    public String solution(String my_string, int k) {
        String answer = "";
        answer = my_string.repeat(k);
        return answer;
    }
}

[문제 해결 방향]

Scanner를 통해서 반복할 문자열을 받은 후, repeat매서드를 사용해서 문자열을 k번 반복하여 합쳐주었다.

[정리]

  • repeat()는 String 메서드 중 하나로 String 문자열을 매개변수로 집어넣은 숫자만큼 반복하는 매서드이다.
  • 매개변수로는 양수를 입력하며, 음수로 지정하게되면 IllegalArgumentExceptionthrow 에러가 발생한다.

4. 더 크게 합치기

[문제 상황]

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

[풀이 코드]

class Solution {
    public int solution(int a, int b) {
        String case1 = ""+a+b;
        String case2 = ""+b+a;
        
        if(Integer.parseInt(case1) > Integer.parseInt(case2)){
            return Integer.parseInt(case1);
        } else {
            return Integer.parseInt(case2);
        }
    }
}

[문제 해결 방향]

Scanner를 통해서 두 숫자 a,b를 받은 후, case1과 case2라는 string 변수를 선언, ""와 함께 +연산자를 사용해서 두 정수를 붙여서 쓴 값을 저장하였다.
이후, Integer의 parseInt매서드를 사용해서 int형으로 어떤 값이 더 큰지 if문에서 비교하고, 둘중 더 큰 값을 return 해주었다.

5. 두 수의 연산값 비교하기

[문제 상황]

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 a b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 2 a b가 같으면 a ⊕ b를 return 합니다.

[풀이 코드]

class Solution {
    public int solution(int a, int b) {
        int ab = Integer.parseInt(""+a+b);
        if(ab > (2*a*b)){
            return ab;
        }else{
            return 2*a*b;
        }
    }
}

[문제 해결 방향]

Scanner를 통해서 두 숫자 a,b를 받은 후, ab라는 int형 변수를 선언하고 a ⊕ b 연산의 결과값을 저장하였다.
이후, if문을 통해서 a ⊕ b와 2 a b 의 값을 비교하고 더 큰값을 return하는 코드를 작성하였다.

꾸준히 했어야했지만,, 갑작스럽게 생기는 일과 예정되어있던 일이 겹치는 바람에 블로그 기록을 하지 못하였다.
주말에는 생활코딩 JAVA1강의를 들었고, 정리한 내용은 다른 글로 업로드 예정이다.
오늘의 알고리즘 끝!
코딩 기초 트레이닝 캘린더

profile
Backend

0개의 댓글