관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 프로그래머스 영어 끝말잇기 -Summer/Winter Coding(~2018)- 본문

알고리즘/일반(단순구현)

[알고리즘] 프로그래머스 영어 끝말잇기 -Summer/Winter Coding(~2018)-

막무가내막내 2020. 5. 1. 13:03
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

영어 끝말있기 문제를 풀어봤습니다. 반복문과 문자열을 조작하여 풀이했습니다. 과거의 기록들을 리스트에, 이전(최근) 단어를 String 에 따로 관리하여 현재단어와 비교하여 해결했습니다. 

 

풀이는 다음과 같습니다.

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

class Solution {

    public int[] solution(int n, String[] words) {
        int[] answer = {};
        List<String> history = new ArrayList<>(); //나왔던 단어들
        String preWord = ""; // 이전(최근)단어
        int count = 1; //차례
        for (int i = 0; i < words.length; i++) {
            if (history.contains(words[i])) { //이미 나온단어
                answer = new int[]{(i % n) + 1, count};
                break;
            }
            if (i != 0 && words[i].charAt(0) != preWord.charAt(preWord.length()-1)) { //앞글자 틀린 경우
                answer = new int[]{(i % n) + 1, count};
                break;
            }
            if ((i + 1) % n == 0) {// 한바퀴 돌았으니 차례 증가
                count++;
            }
            preWord = words[i];
            history.add(words[i]);
            if(i == words.length-1){ // 모두 맞는 끝말잇기인 경우
                answer = new int[]{0,0};
                break;
            }
        }
        return answer;
    }
}

 

728x90
Comments