코딩 테스트 링크
https://school.programmers.co.kr/learn/challenges?order=recent&partIds=17931
문제
1. 크레인 인형뽑기 게임
https://school.programmers.co.kr/learn/courses/30/lessons/64061
2. 징검다리 건너기
https://school.programmers.co.kr/learn/courses/30/lessons/64062
3. 호텔방 배정
https://school.programmers.co.kr/learn/courses/30/lessons/64063
4. 불량 사용자
https://school.programmers.co.kr/learn/courses/30/lessons/64064
5. 튜플
https://school.programmers.co.kr/learn/courses/30/lessons/64065
문제 채점 결과
3 / 5 ( 1 , 4 , 5) + 2 번 효율성 FAIL
1번
문제 해석
- 2차원 배열 내 인형 존재
- 크레인이 이동하는 경로 배열 존재
- 동일한 인형이 바구니에 들어올 시 인형이 터짐
- 경로 후 터진 인형 개수 리턴
문제 해결
해당 요소가 비어있지 않으면 바구니로 이동 -> 바구니에 동일한 인형 두개시 Pop
=> 단순 for 구문 과 stack 을 통해서 구현 가능
2번
문제 해석
- 징검다리는 숫자 배열
- k 는 건널 수 있는 최대 숫자
- 최대 몇 명이 건널 수 있는지 리턴
문제해결 - 정확성
단순 , 처음 부터 끝까지 이동하며 , k 만큼 공백이 있을때까지 반복
=> 매우 쉬운 문제
문제해결 - 효율성
처음부터 매우 시간이 오래 걸리기에 , 무한정 while 문은로는 불가능 함을 인지
1. 가장 작은 값을 제거 하는식으로 하여 , 최소화 하려 했으나 여전히 시간 초과
2. K 를 단위로 쪼개서 최대값 들 중 가장 작은 값을 리턴 한 후 , 처리 하려 했으나
코드가 다 돌아는 가나 , 실패하는 케이스 발견
=> 시간 내 포기
3번
4번
문제 해석
- 사용자 id 존재하는 user_id 배열 , 불량 사용자 id 존재하는 banned_id
- 불량 사용자 id 는 정보 보호 위해 하나 이상의 * 로 구성
- 가능한 제재 아이디 목록의 개수를 리턴
- 중복된 제재 목록은 하나로 간주
문제해결
- 각 불량 id 패턴에 일치하는 요소 matched_list 에 추가
- matched_list 를 재귀함수로 순열과 비슷하게 하나씩 추가하며 , 제거하여 사용
- 마지막에 도달시 , 정렬한 후 기존에 결과값들을 저장한 배열에 목록이 없으면 추가 목록들의 수를 리턴
5번
문제 해석
- 하나의 문자열로 들어오기에 우선 각각 요소들로 변경
- 집합이 주어질 떄 , 온 순서대로 유지를 해서 출력
( {2} , {2,1} , {2,1,3} , {2,1,3,4} => [2,1,3,4])
결론
- 파이선을 사용하기로 마음 먹은 이상 , 파이선이 제공하는 stl 이나 파이선이 제공하는 편리한 장점인 음수 인덱스를 잘 활용해야 시간 단축 및 코드 생각하는 머리를 단축할 수 있을거 같다.
- 5번 문제처럼 배열로 주지 않고 통째로 문자열로 주는 문제는 처음 봤는데 이러한 문제를 대비해 정규식이나 split 하는 방법에 대해서도 알아야 겠다고 느꼈다.
Writed By Obisidan