본문 바로가기
알고리즘/[프로그래머스] JAVA

[코딩 기초 트레이닝] 문자열 바꿔서 찾기

by 코딩맛집 2024. 1. 14.

문제 :

https://school.programmers.co.kr/learn/courses/30/lessons/181864

 

프로그래머스

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

programmers.co.kr

 

틀렸던 해결 방안 :

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        String[] str = myString.split("");

        for(int i = 0; i<str.length; i++){
            if(str[i].equals("A")){
                str[i] = "B";
            }else{
                str[i] = "A";
            }
        }

        String check = str.toString();
        if(check.contains(pat)){
            answer = 1;
        }
        return answer;
    }
}

문자열 배열을 하나의 문자열로 변환하려는 경우 자바에서는 .toString()을 이용하여 직접 변환할 수 없다.

toString()은 객체 타입과 해시값이 출력된다.

 

해결 :

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        String[] str = myString.split("");
        
        for(int i = 0; i<str.length; i++){
            if(str[i].equals("A")){
                str[i] = "B";
            }else{
                str[i] = "A";
            }
        }

        String check = String.join("", str);
        if(check.contains(pat)){
            answer = 1;
        }
        
        return answer;
    }
}

 

배열을 하나의 문자열로 합치는 방법

1. String.join("배열의 원소간 연결할 구분 문자", 배열);

   - List 컬랙션도 사용할 수 있음

 

2. Streams API

String str = Arrays.stream(문자 배열 변수). collect(Collectors.joining("구분할 문자"));

stream을 이용하면 붙일 문자의 접두사, 접미사를 추가할 수 있습니다. Collectors.joining의 첫 번째 인자는 구분 문자, 두 번째 인자는 접두사, 세 번째 인자는 접미사입니다.

 

다른 사람 풀이 :

class Solution {
    public int solution(String myString, String pat) {
        myString = myString.replace("A", "a").replace("B", "A").replace("a", "B");
        return myString.contains(pat) ? 1 : 0;
    }
}