영어 끝말잇기 level 2 자바

Heeeoh·2024년 4월 3일
0

프로그래머스

목록 보기
26/26
post-thumbnail

🧫 문제 분석

✔️ 출처

영어 끝말잇기 level 2

📖 문제

핵심
말 그대로 끝말잇기이며 앞 뒤 문자가 이어지는 지 확인
중복 단어 불가


🔅 문제 풀이

import java.util.*;

class Solution {
    
    // 1번 부터 순서대로 한사람씩 단어
    // 마지막 다음 1번부터 다시시작
    // 마지막 문자로 시작하는 단어
    // 중복 단어 불가
    // 한 글자 불가
    
    public int[] solution(int n, String[] words) {
        Map<String, Boolean> map = new HashMap<>();
        char lastWord = words[0].charAt(0);
        
        for (int i = 0; i < words.length; i++) {          
            if(map.getOrDefault(words[i], false)) 
                return new int[]{(i % n) + 1 , (int)Math.ceil((float)(i + 1) / n)};
                
            else if (lastWord != words[i].charAt(0)) 
                return new int[]{(i % n) + 1 , (int)Math.ceil((float)(i + 1) / n)};
            
            map.put(words[i], true);
            lastWord = words[i].charAt(words[i].length() - 1);
        }
        
        return new int[]{0,0};
    }
}


다른사람풀이를 보며

왜 Math.round Ceil을 쓸생각을 했을까
없어도 충분히 되는데...

import java.util.*;

class Solution {
    
    // 1번 부터 순서대로 한사람씩 단어
    // 마지막 다음 1번부터 다시시작
    // 마지막 문자로 시작하는 단어
    // 중복 단어 불가
    // 한 글자 불가
    
    public int[] solution(int n, String[] words) {
        Map<String, Boolean> map = new HashMap<>();
        char lastWord = words[0].charAt(0);
        
        for (int i = 0; i < words.length; i++) {          
            if(map.getOrDefault(words[i], false)) 
                return new int[]{(i % n) + 1, (i  / n) + 1};
                
            else if (lastWord != words[i].charAt(0)) 
                return new int[]{(i % n) + 1 , (i / n) + 1};
            
            map.put(words[i], true);
            lastWord = words[i].charAt(words[i].length() - 1);
        }
        
        return new int[]{0,0};
    }
}


❗ 오답노트 / 필요한 지식

  1. 처음에 Math.round를 사용했는데 생각해보니 반올림이 아닌 올림을 해줘야하는 것이였다. ceil()메서드를 기억하자.
  2. 올림, 반올림같은 메서드는 실수형을 매개변수에 넣어야한다. 사용시 캐스팅해주자.
  3. 중복체크에 적합한 Set이 있다..
  4. 굳이 반올림, 올림 안해도 충분한데 이걸 생각못했다. 잘 기억해두고 써먹자.
profile
열심히 살자

0개의 댓글