말하는 컴공감자의 텃밭

Java 형 변환, 메서드 (프로그래머스 입문 equals, split, Arrays.sort 본문

알고리즘/Programmers - Java

Java 형 변환, 메서드 (프로그래머스 입문 equals, split, Arrays.sort

현콩 2023. 4. 15. 17:33
728x90

프로그래머스 문제를 푸는데 오랜만에 java를 해서 형변환이랑 메서드가 헷갈려서 정리합니다.

진짜 여태 살면서 뭘한거지 후후

감..감자.. 감..자자 소스와 곁들여 드십쇼

 

프로그래머스 쉬운 문제들을 예시로 하나하나 정리해 봅니다.

 

https://school.programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

먼저 자바에서 형변환도 헷갈려서 간단하게 정리해 봅니다.

  • Integer : 정수를 다루기 위한 클래스
  • Char : 문자 1개를 다루기 위한 자료형
  • String : 문자열을 다루기 위한 클래스

로 간단하게 나눌 수 있습니다. // 물론 정수형과 실수형 변환도 있습니다. //

소수 점 살려야징

 

먼저 Int형에서 String형으로 변환하려면 .toString() 사용해 줍니다. 

Char형으로 변경하려면 char()을 사용해줍니다.

Int에서의 형변환

 

char형에서는 두 가지 경우로 나눴는데요, 숫자가 담겨있어도 아스키코드로 담겨있어서 주의해야 합니다.

// 후후 이게 갑자기 헷갈렸지 모야

 

숫자가 있는 경우와 문자가 들어가 있는 경우로 나눠봤는데요. ch에는 '3'이 담겨있고, ch1에는 'a'와 'b'가 있습니다.

int형으로 바꾸려는 경우에 (int)를 사용해 주시면 되는데, 숫자 3이 아닌 아스키코드이기 때문에 '0'을 빼주어야 합니다.

아스키코드 표를 살펴보면 문자 0 ~ 9는 48 ~ 57기 때문이에요.

 

String형으로 변환하는 경우. valueOf()를 사용해 줍니다. 

char에서의 형변환

 

마지막으로 String형에서 Int형char형으로 변환하는 경우입니다.

Integer.pasrseInt()Integer.valueOf()를 사용하여 Int형으로 변환할 수 있습니다.

char형으로는 .charAt()로 변환이 가능하고, 배열에 넣으려면 .toCharArray()를 통해 넣을 수 있습니다.

String에서의 형변환

 

이걸 까먹어서 문제 하나에 30분 잡아먹고 그랬네요... 

이상하게 이러면 시간 빨리가

 

 

이젠 까먹었던 메소드들 equals, split, Arrays.sort 를 프로그래머스 문제를 풀어보면서 써보려합니다 ><

// 다 푼거에서 찾는것도 일이네요 

 

 .equals 는 문자열을 비교해주는 친구입니다. 문제랑 함께 볼게요.

 

프로그래머스 배열의 유사도

 

문제를 보게되면 배열이 얼마나 유사한가 를 확인하려합니다. 그렇다면 배열 두개가 필요할거고 비교하는 메소드인 

.equals()가 쓰이겠죠. 

s1과 s2에 담긴 정보를 하나하나 비교하고,  반복문을 통해 일치하는경우 result값을 올려주면 되겠네요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
    public int solution(String[] s1, String[] s2) {
        int answer = 0;        
        
        for(int i=0; i&lt;s1.length; i++){
            for(int j=0; j&lt;s2.length; j++){
            if ( s1[i].equals(s2[j]) ){
                answer++;
            }
        }}
        
        return answer;
    }
}
cs

얍~! 간단쑤

 

다음으로는 split() 입니다. 문자열에서 나눠주는 친구인데요 괄호에 조건을 넣어서 사용합니다.

 

또 예제를 풀어보면서 볼건데요 .equals() 도 사용하는 문제네요.

프로그래머스 문자열 계산하기

my_string에 문자열이 들어오고 ex) "3 + 4"  해당하는 수식의 값을 정수로 출력하는 문제네요.

연산자는 +, - 만 존재하기 때문에 +가 있는경우와 -가 있는 경우를 나누어주고, my_string.length만큼 반복하여 수식을 완성하면 되겠네요.

 

띄어쓰기로 숫자와 연산자가 구분지어지기 때문에 split(" ") 를 통해 띄어쓰기를 만나는 경우 구분을 짓게 해줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        String[] arr = my_string.split(" ");
        answer = Integer.parseInt(arr[0]);
        
        for (int i = 1; i<arr.length; i ++){
           if( arr[i].equals("+")){
               answer += Integer.parseInt(arr[i+1]);
            } else if (arr[i].equals("-")) {
               answer -= Integer.parseInt(arr[i+1]);
            }
        }
        
        return answer;
    }
}
cs

 

앞서 보았던 Integer.pasrsInt()도 사용이 되었네요. 

// array[ i + 1] 인 이유는 연산자 다음 차례에 숫자가 들어가기 때문입니당.

 

마지막으로 Arrays.sort() 친구 입니다. 배열오름차순으로 정리해주는 친구인데요, 예제로 보시죠

삼각형의 완성조건 (1)

sides[] 배열에 각 변이 들어가고, 삼각형을 만들 수 있으면 1, 불가능하면 2를 출력하는 문제입니다.

배열을 정렬하면, 가장 큰 변이 맨 뒤인 sides[2] 일테니 sides[2] 랑 sides[0] + sides[1]을 비교하면 되겠네요

꼭 Array.sort()를 사용안해도 되는 문제긴 하지만 활용할 문제가 안보이네요...ㅠ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.*;
 
class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        Arrays.sort(sides);
        int a = sides[0]+sides[1];
        
        if (sides[2]<a){
            answer = 1;
        }
        else answer = 2;
        
        return answer;
    }
}
cs

 

따란. ★

728x90
Comments