반응형
11. 영어 끝말잇기

문제

import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {
        int[] answer = new int[2];
        Map<String, Integer> map = new HashMap<>();
        
        for(int i=0; i<words.length; i++){
            if(i != 0){
                String str = words[i];
                String before = words[i-1];
                
                char first = str.charAt(0);
                char last = before.charAt(before.length()-1);
                
                if(map.containsKey(str) || first != last){
                    answer[0] = (i % n) + 1;
                    answer[1] = (i / n) + 1;
                    
                    return answer;
                }
            }
            
            map.put(words[i], i);
        }

        return answer;
    }
}

<작성한 코드>

Map형식의 map변수 하나를 만들었다. 그 뒤 for문을 사용해서 words의 단어들을 확인했고 i가 0이 아닐 때는 str에는 현재 단어를 대입, before에는 이전의 단어를 대입해 줬다. 그 뒤 first에는 현재 단어의 첫 글자를 넣어주고, last에는 이전글자의 마지막번째 글자를 넣어줬다. 그 뒤 if문을 사용해서 map에 str를 키값으로 가지는 값이 있거나 first, last가 다른 값일시 answer에 각각 i% n+1, i/n+1을 해서 번호와 차례를 넣어줬다. 만약 여기에 걸리지 않는다면 map에 words [i]를 키로가 지는 값을 넣어주고 반복했다. 

 

 

 

 

12. 점프와 순간이동

문제

import java.util.*;

public class Solution {
    public int solution(int n) {
        int ans = 0;

        while(n > 0){
            if(n%2 == 0){
                n/=2;
            } else{
                n--;
                ans++;
            }
        }

        return ans;
    }
}

<작성한 코드>

while의 실행조건을 n이 0보다 클때로 걸었다. 그 뒤 내부에서는 n이 2로 나눠 떨어질 수 있으면 n을 2로 나눈다. 만약 홀수라면 n에서 1일 빼주고 ans에는 1을 더해서 카운트를 올려준다. n이 0보다 작아질 때까지 반복한 뒤 ans를 반환해 주면 된다.

 

반응형

+ Recent posts