새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자기주도학습
  • 내일배움캠프
  • 개발일지
  • machine learning
  • Github
  • AI트랙
  • 내일배움카드
  • 코딩
  • Python
  • TodayILearned
  • 코린이
  • Selenium 4
  • 국비지원
  • 스파르타코딩클럽
  • til
  • docker
  • 코딩프로젝트
  • 프로그래머스
  • portfolio
  • 내일배움단

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[프로그래머스] 코딩테스트 연습 완전탐색 모의고사

2022. 7. 21. 23:38

문제

문제 설명

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.

1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5,...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5,...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5,...

1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

 

입력 & 출력

입출력 예

answersreturn

[1,2,3,4,5] [1]
[1,3,2,4,2] [1,2,3]

 

풀이 과정

1. 수포자의 패턴을 먼저 분석 3명의 참가자는 각각의 패턴이 있으며 이는 일정 길이의 배열로 생각할 수 있다. 

2. 문제 숫자에 따라서 배열의 인덱스에 따라서 순회하면서 올바른 값을 찾는 방식으로 진행이 되겠지만 무한으로 순회를 하는 방법을 생각해야 한다. 각 배열을 원형 큐에 넣는다고 생각하고 인덱스 숫자를 사용해도 되겠지만 배열의 길이를 이용해서 몇 번째 숫자를 원하는지를 사용하여서 배열을 순회하게 만들었다.

3. 전체 숫자를 탐색하는 방식과 이를 조건문 분기하는 방식이 많겠지만 단순히 모든 경우를 작성하여서 각 경우에 나와야 하는 답변을 조건문 분기로 다 적어주었다.

 

코드

def solution(answers):
    answer = []

    cnt_one = 0
    cnt_two = 0
    cnt_three = 0
    one = [1, 2, 3, 4, 5]
    two = [2, 1, 2, 3, 2, 4, 2, 5]
    three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    for i, ans in enumerate(answers):
        if ans == one[i % len(one)]:
            cnt_one += 1
        if ans == two[i % len(two)]:
            cnt_two += 1
        if ans == three[i % len(three)]:
            cnt_three += 1

    answer.append(cnt_one)
    answer.append(cnt_two)
    answer.append(cnt_three)

    set(answer)
    max(answer)

    if cnt_one == cnt_two and cnt_two == cnt_three and cnt_one == cnt_three:
        answer = [1, 2, 3]
    elif cnt_one == cnt_two and cnt_two > cnt_three:
        answer = [1, 2]

    elif cnt_two == cnt_three and cnt_three > cnt_one:
        answer = [2, 3]

    elif cnt_one == cnt_three and cnt_one > cnt_two:
        answer = [1, 3]
    elif cnt_one == cnt_two and cnt_two < cnt_three:
        answer = [3]

    elif cnt_two == cnt_three and cnt_three < cnt_one:
        answer = [1]

    elif cnt_one == cnt_three and cnt_one < cnt_two:
        answer = [2]
    elif cnt_one > cnt_three and cnt_one > cnt_two:
        answer = [1]
    elif cnt_two > cnt_three and cnt_two > cnt_one:
        answer = [2]
    elif cnt_three > cnt_one and cnt_three > cnt_two:
        answer = [3]

    return answer
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[프로그래머스] 코딩테스트 연습연습문제 가운데 글자 가져오기  (0) 2022.07.23
[프로그래머스] 코딩테스트 연습위클리 챌린지 부족한 금액 계산하기  (0) 2022.07.22
[프로그래머스] 코딩테스트 연습해시 폰켓몬  (0) 2022.07.19
[프로그래머스] 코딩테스트 연습스택/큐프린터  (0) 2022.07.18
[프로그래머스] 코딩테스트 연습2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임  (0) 2022.07.17
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 코딩테스트 연습연습문제 가운데 글자 가져오기
    • [프로그래머스] 코딩테스트 연습위클리 챌린지 부족한 금액 계산하기
    • [프로그래머스] 코딩테스트 연습해시 폰켓몬
    • [프로그래머스] 코딩테스트 연습스택/큐프린터
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바