[프로그래머스/JAVA] Lv.0 A로 B만들기

또치·2023년 1월 18일
0

프로그래머스 JAVA

목록 보기
3/20
post-thumbnail

A로 B만들기

List, indexOf, remove 사용

👓 기억하고 싶은 부분 👓
1. 문자열에서 indexOf 사용하기
그냥 문자열이나 배열에서는 사용못하기 때문에
List로 변환하거나Arrays 사용해서 list로 변환시켜줘야한다!

Arrays.asList("문자열 or 배열").indexOf(i)

2. List에서 값 제거 - remove 사용

list.remove(String.valueOf(before.charAt(i)));

🎯 문제

문자열 before와 after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

<제한사항>
0 < before의 길이 == after의 길이 < 1,000
before와 after는 모두 소문자로 이루어져 있습니다.

<예시>
before		after		result
"olleh"		"hello"		1
"allpe"		"apple"		0

답안

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int solution(String before, String after) {
        int answer = 0;
        
        String[] array=after.split("");
        List<String> list=new ArrayList<>(Arrays.asList(array));
        
        for(int i=0; i<array.length; i++) {
        	if(list.indexOf(String.valueOf(before.charAt(i)))==-1) {
        		answer=0;
                return answer;
        	}else {
        		list.remove(String.valueOf(before.charAt(i)));
        		answer=1;
        	}
        	
        	
        } 
        return answer;
    }
}

🎲 과정

매개변수로 받은 두개의 문자열을 비교해서 after가 before에 있는 모든 글자를 가지고 있는지 확인하면 되겠다고 생각했다. 근데 그러려니까 h를 여러개 가지고 있어야되면 indexOf하나만 가지고는 해결이 안돼서 문자열을 아예 list로 바꾼다음에 찾았을때 index가 -1이 아니면 remove 사용해서 제거해주는 식으로 풀었다.
그렇게 인덱스 하나하나 찾을때마다 answer 바꿔주는 식으로 풀었다!

0개의 댓글