250x250
250x250
JinSeopKim
Hello World!
JinSeopKim
전체 방문자
오늘
어제
  • 분류 전체보기 (168)
    • Artificial intelligence (14)
      • DeepDiveToAI (3)
      • Pytorch (3)
      • Etc (8)
    • Back-end (19)
      • Spring (10)
      • JPA (9)
    • Language (24)
      • Python (3)
      • Java (11)
      • Swift (10)
    • Math (4)
      • Linear Algebra (4)
    • CodingTest (79)
      • Algolithm (12)
      • Backjoon (25)
      • Programmers (42)
    • Etc (27)
      • Book Review (3)
      • Adsp (6)
      • Life (2)
      • Docker (1)
      • odds and ends (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub

인기 글

태그

  • 개발
  • java
  • ADsP
  • BOJ
  • 개발자
  • certificate
  • 파이썬
  • 구현
  • 브루트포스
  • 프로그래머스
  • 코딩테스트
  • ios
  • 문제풀이
  • 카카오
  • 백준
  • BFS
  • swift
  • JAVA8
  • data
  • SpringMVC
  • JPA
  • uArm
  • 자바
  • Python
  • Front-end
  • 머신러닝
  • AI
  • DP
  • 선형대수
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
JinSeopKim
CodingTest/Programmers

[PGM_12981] 영어 끝말잇기 (Java)

[PGM_12981]  영어 끝말잇기 (Java)
CodingTest/Programmers

[PGM_12981] 영어 끝말잇기 (Java)

2022. 3. 17. 20:47
728x90
728x90

문제링크

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

 

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

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

문제풀이

👨🏻‍💻 핵심 스킬 👨🏻‍💻
 Set

1. 문제 이해

n명의 사람이 영어로 끝말잇기를 진행한다. 끝말잇기의 내용은 words라는 String 배열로 받는다. 끝말잇기는 1번부터 n번까지의 사람이 차례대로 말을 하며 n번 사람이 말하면 다시 1번 사람이 말을 하게 된다. 앞에서 언급한 단어와 끝말이 이어지지 않거나, 중복된 단어를 사용한 경우 문제를 틀리게된다. 이 때 실수를 한 사람과 몇번째 차례에서 틀렸는지를 확인하는 문제이다.

 

2. 접근방법

중복된 단어를 사용하는지 여부는 Set을 확인하여 해결하였다.

사용한 단어를 Set에 넣어주어 추후에 단어가 나오는지를 확인하여 문제를 해결하였다.

구현코드

package pgm_12981;

import java.util.HashSet;
import java.util.Set;

public class Solution {
    public int[] solution(int n, String[] words) {
        Set<String> sayLog = new HashSet<>();
        int cnt = 1;
        int person = 0;
        String prevWord = String.valueOf(words[0].charAt(0));
        for(String word : words){
            if(sayLog.contains(word) || prevWord.charAt(prevWord.length()-1) != word.charAt(0))
                return new int[]{person+1,cnt};
            prevWord = word;
            sayLog.add(word);
            if(person % n == n-1)
                cnt++;
            person = (person + 1)%n;
        }
        return new int[]{0,0};
    }
}
잘못된 지식이나 궁금한 내용이 있을 경우 편하게 댓글 남겨주시면 감사하겠습니다 :)

 

728x90
728x90
저작자표시 비영리

'CodingTest > Programmers' 카테고리의 다른 글

[PGM] 구명보트 (java)  (0) 2022.03.29
[PGM] 주식 가격 (Java)  (0) 2022.03.27
[PGM_77885] 2개 이하로 다른 비트 (Java)  (0) 2022.03.16
[PGM_42883] 큰 수 만들기 (Java)  (0) 2022.03.14
[PGM_42583] 다리를 지나가는 트럭  (0) 2022.03.13
  • 문제링크
  • 문제풀이
  • 구현코드
'CodingTest/Programmers' 카테고리의 다른 글
  • [PGM] 구명보트 (java)
  • [PGM] 주식 가격 (Java)
  • [PGM_77885] 2개 이하로 다른 비트 (Java)
  • [PGM_42883] 큰 수 만들기 (Java)
JinSeopKim
JinSeopKim
기록📚

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.