알고리즘 공부/프로그래머스

(Java)프로그래머스 코딩테스트 연습 - Summer/Winter Coding(~2018) - 영어 끝말잇기

HRuler 2020. 11. 29. 16:39

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/12981?language=java

 

코딩테스트 연습 - 영어 끝말잇기

3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0]

programmers.co.kr

2. 나의 풀이

import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {
        int [] answer = {0, 0};
        ArrayList<String> arr = new ArrayList<>();
        for(int i = 0; i < words.length; i = i + 1) {
        	if(i == 0) {
        		arr.add(words[i]);
        		continue;
        	}
        	//System.out.println(Character.toString(words[i - 1].charAt(words[i - 1].length() - 1)));
        	if(words[i].charAt(0) != words[i - 1].charAt(words[i - 1].length() - 1)) {
        		answer[1] = (i / n) + 1;
        		answer[0] = (i % n) + 1;
        		break;
        	}else if(arr.contains(words[i])) {
        		answer[1] = (i / n) + 1;
        		answer[0] = (i % n) + 1;
        		break;
        	}
        	arr.add(words[i]);
        }
        return answer;
    }
}

3. 다른 사람 풀이

import java.util.HashSet;

class Solution {


    public int[] solution(int n, String[] words) {
      int[] answer = { 0, 0 };
        char chEnd = words[0].charAt(words[0].length() - 1);
        char chStart;
        System.out.print(chEnd + " ");
        HashSet<String> log = new HashSet<>();
        log.add(words[0]);
        for (int i = 1; i < words.length; i++) {
            chStart = words[i].charAt(0);
            log.add(words[i]);
            if (chEnd != chStart || log.size() != i + 1) {
                System.out.print(i + 1 + "!");
                answer[0] = (i % n)+1;
                answer[1] = (i / n) + 1;
                break;
            }

            chEnd = words[i].charAt(words[i].length() - 1);
            System.out.print(chEnd + " ");
        }
        System.out.println();
        System.out.println("(" + answer[0] + ", " + answer[1] + ")");
        return answer;
    }
}