[프로그래머스 코딩테스트 연습문제] 옹알이 (1) 문제 풀이 with 자바스크립트(Javascript) & 자바(Java)

Re_Go·2024년 7월 3일
0

코딩테스트연습

목록 보기
91/106
post-thumbnail

1. 첫번째 문제 풀이(2024-07-03)

해당 문제는 순회를 이용하면서 각 단어에 문자열이 하나씩 들어있는지를 확인하는 문제인데요.

문제는 각 문자열들이 불변 타입이다보니 배열에서 데이터를 하나 빼오는 작업과는 다르게 배열에서 문자열을 뺴와서 거기서 또 문자열을 빼는 상당히 복잡한 구조의 문제라고 생각이 되었습니다.

그래서 저는 원본 배열을 변경하지 않는 선에서 매번 for문을 돌때마다 해당 단어가 배열의 영단어를 포함하고 있다면, 그만큼 집어온 단어의 길이를 빼주고, for문을 다 돌린 뒤 단어의 길이가 0이 될때, 즉 네 가지의 단어의 특정 부분을 포함하고 남은 길이가 없는 단어임이 판명날 때 count를 증가하는 방법으로 해당 문제를 풀게 되었는데요.

이건 코드를 봐야 좀 더 이해가 가실거라 생각이 되니 코드를 살펴보도록 하겠습니다.

  1. 자바스크립트 버전
function solution(babbling) {
        let arr = ["aya", "ye", "woo", "ma"];

  		// 조건에 맞으면 누적할 count 변수
        let count = 0;
  		// 첫번째 for문은 전달 받은 bablling 배열만큼 돌면서
        for(let i = 0 ; i < babbling.length ; i++){
            // babbling의 i번째 문자열과 그 길이를 가져와주고
            let word = babbling[i];
            let length = word.length;
         // 두번째 for문은 미리 설정해 놓은 네 가지 단어가 있는 arr 배열을 사용하여 만약 해당 단어가 arr 배열의 단어를 포함하고 있다면 그 단어의 길이만큼 단어의 길이를 빼줍니다.
            for(let j = 0 ; j < arr.length ; j++){
                if(word.includes(arr[j])){
                    length -= arr[j].length
                }
            }
          	// babbling 배열의 특정 단어에 대해 arr 배열의 모든 단어를 한 번씩 체킹하고 난 뒤 length가 0이라는 뜻은 arr 배열의 단어들을 다 하나씩 사용하면서 babbling 배열의 특정 단어에 포함되어 있는 것을 확인했고, 그래서 조건문에 의한 코드문이 발동되어 길이가 줄어들 때 0이 되었다는 것은 해당 arr의 단어들 외의 단어가 없는 상태임을 의미하므로 count를 증가시켜 줍니다. (즉 해당 arr 배열의 단어들을 하나씩만 사용하여 babbling의 특정 단어를 완전히 완성할 수 있음을 의미함)
            if(length == 0) count++;
        }
    return count;
}

그리고 자바 버전으로 구현한 코드는 다음과 같습니다.

  1. 자바 버전
import java.util.Arrays;
import java.util.List;

public class Solution {
    public static int solution(String[] babbling) {
        String[] arr = {"aya", "ye", "woo", "ma"};
        int count = 0;

        for(int i = 0 ; i < babbling.length ; i++){
            boolean flag = true;
            String word = babbling[i];
            int length = word.length(); 

            for(int j = 0 ; j < arr.length ; j++){
                if(word.contains(arr[j])){ 
                    length -= arr[j].length();
                }
            }
            if(length == 0) count++;
        }

        return count;
    }
}

2. 자바와 자바스크립트 풀이 차이점

  1. 특정 문자열의 존재 여부를 판단할때 JSincludes, 자바contains를 사용하며, 문자열의 길이를 출력할 때 JSlength 필드만 써도 되지만, 자바length() 메서드를 작성해 주어야 합니다.
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글