ν•΄λ²„λ‹ˆ 2023. 11. 29. 12:22
λ°˜μ‘ν˜•

 

 

 

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

 

 

풀이

ν‹€λ¦¬λŠ” κ²½μš°λŠ” 두 가지이닀.

1️⃣ 이미 λ§ν•œ 단어λ₯Ό λ‹€μ‹œ λ§ν•˜λŠ” μ‚¬λžŒ 

2️⃣ 끝말에 이어 λ§ν•˜μ§€ μ•Šμ€ μ‚¬λžŒ 

이 두 가지λ₯Ό μ²΄ν¬ν•˜λ©΄μ„œ ν‹€λ¦° μ‚¬λžŒμ„ μž‘μ•„λ‚΄λ©΄(?) λœλ‹€. 

 

import java.util.HashSet;

class Solution {
    public int[] solution(int n, String[] list) {
        int[] answer = new int[2];

        HashSet<String> word = new HashSet<>();
        int index = 0;
        for (int i = 0; i < list.length; i++) {
            if (i > 0 && word.contains(list[i])) {
                index = i;		// 이미 μžˆλŠ” 단어λ₯Ό 말함 
                break;			// 처음 ν‹€λ¦° μ‚¬λžŒμ„ μΆ”μΆœν•˜λ©΄ λ˜λ―€λ‘œ 찾으면 break
            } else {
                word.add(list[i]);	// 처음 μ“°λŠ” λ‹¨μ–΄λŠ” word에 μΆ”κ°€ 
            }

		// 단어 끝과 처음 charAt 비ꡐ / ex) apple -> banana (뒀에 μžˆλŠ” μΈλ±μŠ€κ°€ ν‹€λ¦°κ±°λ‹ˆκΉŒ index = i+1 λ„£μ–΄μ£ΌκΈ° 
            if (i < list.length - 1 && list[i].charAt(list[i].length() - 1) != list[i + 1].charAt(0)) {
                index = i + 1;
                break;	// 처음 ν‹€λ¦° μ‚¬λžŒμ„ μΆ”μΆœν•˜λ©΄ λ˜λ―€λ‘œ 찾으면 break
            }
        }

        if (index > 0) {
            index += 1; 

            answer[0] = index % n;	// λͺ‡ 번째둜 λ§ν•˜λŠ” μ‚¬λžŒμΈμ§€ 
            answer[1] = (int) Math.ceil((double) index / n);	// λͺ‡ μ„ΈνŠΈ ν–ˆλŠ”μ§€

            if (answer[0] == 0) {
                answer[0] = n;
            }
        }

        return answer;
    }
}

 

 

 

 

 

 

 

 

 

μ •λ‹΅

 

 

 

 

λ°˜μ‘ν˜•