728x90
반응형
영어 끝말잇기
코딩테스트 연습 - 영어 끝말잇기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
result의 0번째 인덱스는 제외된 사람의 번호
result의 1번째 인덱스는 끝말잇기 몇회째에 탈락했는지.
static int[] solution(int n, String[] words) {
int[] answer = { 0, 0 };
HashMap<String, Integer> sMap = new HashMap<String, Integer>();
sMap.put(words[0], 0);
for (int i = 1; i < words.length; ++i) {
sMap.put(words[i], 0);
if (words[i - 1].charAt(words[i - 1].length() - 1) != words[i].charAt(0) || sMap.size() < i + 1) {
answer[0] = i % n + 1;
answer[1] = i / n + 1;
break;
}
}
return answer;
}
words 를 순회하면서 조건을 찾는데
if 앞 조건
if ( words[i - 1].charAt(words[i - 1].length() - 1) != words[i].charAt(0) ||
words의 앞글자랑 뒷글자를 매칭하고
앞조건(이거나) || 뒷 조건 = sMap.size() < i + 1)
smapsize는 똑같은 key값이 들어가면 i+1보다 작아지니까 겹치는 단어를 필터링한다
(hashMap의 key값은 중복을 허용하지 않는다 )
map에 같은 키값이 들어가면 동일한 하나로 생각해서 그걸로 판별하는것.
만약 5명이서 게임을 반복한다고 생각하고 15번째에 걸렸다고 하면 ,
5번째사람이 끝말인기 3번째게임 에 걸린것이니까
5명이서 빙빙 돌면서 하는데 5명이 몇번씩 시도했는지 찾는거라 생각하면 된다.
n명이서 도는데 몇번 돌았냐 체크
answer[0] = i % n + 1;
0번째 인덱스는 제외되는 사람이니까 n보다 크면안된다.
그래서 i의 요소를 n으로 나눈 나머지에 +1을 해주는것
answer[1] = i / n + 1;
1번째 인덱스는 15번째에 걸린것이라고 생각하면 /5로 나누는데
순서는 1번부터 시작이고, 인덱스는 0번부터니까 +1
이클립스 전체코드 , 컴파일 후 결과
728x90
반응형
'java 문제풀기(프로그래머스스쿨, 강의)' 카테고리의 다른 글
SQL 고득점 kit join(상품별 오프라인 매출 , 조건에 맞는 저자와 도서 ) (0) | 2023.07.03 |
---|---|
코딩테스트 입문 (피자나눠먹기 1, 피자나눠 먹기 2) (0) | 2023.06.27 |
코딩 테스트 입문( 최빈값 구하기 , 짝수는 싫어요 ) (0) | 2023.06.25 |
코딩테스트입문 ( 배열의 평균 값, 양꼬치 , 배열 뒤집기, 배열 원소길이) (0) | 2023.06.21 |
코딩 테스트 입문 (두수의 나눗셈, 배열2배만들기 , 각도기,짝수의 합) (0) | 2023.06.21 |