TIL Java

내일배움캠프 27일차 TIL _ 6주 3일차

mad038 2024. 5. 22. 22:06

 

  • 오늘 있었던 일
    • 개인과제
    • 알고리즘

SPRIONG

  • 스프링 정리

 

알고리즘 문제 풀기

     ● 옹알이 (2)

더보기

● 옹알이 (2) //링크

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

class Solution {
    public int solution(String[] babbling) {
        String [] word = {"aya", "ye", "woo", "ma"};
        String num = "^[0-9]*$";
        int answer =0;

        for (String s : babbling) {
            int test = 0;
            while (true) {
                int z = 0;
                for (int i = 0; i < word.length; i++) {
                    List<String> words = new ArrayList<>( Arrays.asList( s.split( "")));
                    String w = word[i];
                    int index =  s.indexOf( w );
                    if(index != -1){
                        if(index != 0){
                            if(words.get( index - 1 ).equals(i+"")){
                                test++;
                            }
                        }
                        words.set(index,i+"");
                        words.subList(index+1, index + w.length()).clear();
                    }else {
                        z++;
                        continue;
                    }
                    s = String.join("", words);
                }
                if(test >= 1 || z >= 4){
                    break;
                } else if (s.matches(num)) {
                    answer++;
                    break;
                }
            }



        }
        return answer;
    }
}
  • 문제 지문의
    •  "yeye"는 같은 발음이 연속되므로 발음할 수 없습니다. 따라서 2를 return합니다.
    • 동일 문은 못들어온다. 
      • replace문으로 해당 단어들을 지웠지만 yeye같은 반복문을 고려하지 못했다.
      • 인덱스를 이용해 이전 단어가 다시 들어오면 끝내도록 만들었다.
    • String w = word[i];
                          int index =  s.indexOf( w );
                          if(index != -1){
                              if(index != 0){
                                  if(words.get( index - 1 ).equals(i+"")){
                                      test++;
                                  }
                              }
                              words.set(index,i+"");
  • 밑은 다른 사람의 풀이
  • class Solution {
        public int solution(String[] babblings) {
            // "aya", "ye", "woo", "ma" 4가지 발음만 가능
            int answer = 0;
            for(int i = 0; i < babblings.length; i++) {
                if(babblings[i].contains("ayaaya") || babblings[i].contains("yeye") || babblings[i].contains("woowoo") || babblings[i].contains("mama")) {
                    continue;
                }
    
                babblings[i] = babblings[i].replace("aya", " ");
                babblings[i] = babblings[i].replace("ye", " ");
                babblings[i] = babblings[i].replace("woo", " ");
                babblings[i] = babblings[i].replace("ma", " ");
                babblings[i] = babblings[i].replace(" ", "");
    
                if(babblings[i].length()  == 0) answer++;
    
            }
            return answer;
        }
    }
  • ㅇ? ㅇ?????? babblings[i].contains("yeye") 이따위 문으로 스킵을 넘겼다고? 아니 잠만 이거 넘어넘 아니 ㅡ으아니 한시간 내내 고민했었는데 이렇게도 yeyeye 3번 나와도 되긴 한데 아니 으아아.

 

  


당일 회고

  • 오늘 하루종일 집중못했다... 난 쓰랡