[프로그래머스] 완전탐색 "모의고사" (파이썬)

2022. 4. 30. 23:34·Problem Solving/프로그래머스
반응형
문제

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

 

코딩테스트 연습 - 모의고사

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

programmers.co.kr

완전 탐색(Brute Force): 가능한 모든 경우의 수를 다 시도해 보는 것

 

 

코드
def solution(answers):
    answer = []
    s1 = [1, 2, 3, 4, 5]
    s2 = [2, 1, 2, 3, 2, 4, 2, 5]
    s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    scores = [0,0,0]
    max_score = 0
    for i in range(len(answers)):
        if(s1[i%5] == answers[i]): scores[0] = scores[0] + 1
        if(s2[i%8] == answers[i]): scores[1] = scores[1] + 1
        if(s3[i%10] == answers[i]): scores[2] = scores[2] + 1
    max_score = max(scores)
    for i in range(len(scores)):
        if (scores[i] == max_score):
            answer.append(i+1)
    return answer

 

 

코드 설명

s1: 첫번째 학생의 정답 리스트

s2: 두번째 학생의 정답 리스트

s3: 세번째 학생의 정답 리스트

scores: 세 학생의 정답 갯수

max_scores: scores 리스트 중 가장 큰 값

answers: 입력으로 받은 정답 리스트

answer: 최종 정답 리스트, return할 값

 

  1. 입력으로 받은 answers 리스트의 값과 s1, s2, s3의 값을 하나씩 비교해 보며 두 값이 일치하면 scores 리스트의 값을 1씩 증가시킨다. answers 리스트의 값이 s1, s2, s3보다 클 수 있으므로(시험은 최대 10,000 문제라고 명시되어 있다) 모듈러 연산을 통해 값이 반복되게 해 준다.
  2. 위 작업이 모두 끝나면 scores 리스트 값 중 가장 큰 값을 추출해 내고 이를 max_score 변수에 저장한다.
  3. scores 리스트를 반복문으로 돌며 max_score 값과 동일한 값이 있을 시 새로운 배열 answer에 인덱스 값을 추가한다. 이때 i는 0부터 시작하고 학생은 1부터 시작하므로 i에 1을 더해 학생 번호와 값을 맞추어 준다.
  4. answer 리스트를 리턴한다.

 

 

마무리

푸는 데 시간이 정말 오래 걸렸다.
아직도 모듈러 연산이 헷갈린다. 기본에 충실하여 더 연습해야겠다.

 

 
+ 추가
 for i in range(len(answers)):
        if(s1[i%len(s1)] == answers[i]): scores[0] += 1
        if(s2[i%len(s2)] == answers[i]): scores[1] += 1
        if(s3[i%len(s3)] == answers[i]): scores[2] += 1
이렇게도 코드 작성이 가능하다.
반응형
저작자표시 비영리 변경금지 (새창열림)

'Problem Solving > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 위클리 챌린지 "부족한 금액 계산하기"(파이썬)  (0) 2022.05.05
[프로그래머스] 연습문제 "x만큼 간격이 있는 n개의 숫자"(파이썬)  (0) 2022.05.04
[프로그래머스] 연습문제 "핸드폰 번호 가리기"(파이썬)  (0) 2022.05.02
[프로그래머스] 연습문제 "시저암호" (파이썬)  (0) 2022.05.02
[프로그래머스] 월간 코드 챌린지 시즌2 "음양 더하기" (파이썬)  (0) 2022.04.25
[프로그래머스] 월간 코드 챌린지 시즌3 "없는 숫자 더하기" (파이썬)  (0) 2022.04.25
'Problem Solving/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 연습문제 "핸드폰 번호 가리기"(파이썬)
  • [프로그래머스] 연습문제 "시저암호" (파이썬)
  • [프로그래머스] 월간 코드 챌린지 시즌2 "음양 더하기" (파이썬)
  • [프로그래머스] 월간 코드 챌린지 시즌3 "없는 숫자 더하기" (파이썬)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 (505)
      • 프로그래밍 (41)
        • Programming (1)
        • C | C++ (6)
        • Java (28)
        • Python (5)
      • 웹 프로그래밍 (108)
        • HTML | CSS (5)
        • JavaScript | TypeScript (41)
        • React (25)
        • Vue.js (0)
        • Next.js (18)
        • Spring & Spring Boot (13)
        • JSP & Servlet (1)
        • DB (4)
      • 웹 프로젝트 (77)
        • 웹 프로젝트 (22)
        • 🥨스낵몰 (3)
        • 👨‍👨‍👧‍👧소셜 가계부 (26)
        • 🌜꿈 일기장 (11)
        • 🔮포트폴리오 사이트 (11)
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램 (0)
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼 (0)
        • 😺Just Meow It: 조언 사이트 (2)
        • 📕Workly: 교대근무 다이어리 (1)
      • 앱 프로그래밍 (26)
        • Flutter (24)
        • Kotlin (2)
      • Problem Solving (166)
        • 백준 (52)
        • 프로그래머스 (79)
        • SWEA (29)
      • Computer Science (40)
        • 알고리즘 (14)
        • 컴퓨터 네트워크 (18)
        • 이산수학 (8)
      • Developer (47)
        • 후기 (4)
        • 자료정리 (4)
        • 취업 | 취준 (9)
        • SSAFY (1)
        • 웹개발 교육 프로그램 (9)
        • TIL (20)
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    웹사이트
    ZeroCho
    알고리즘
    mysql
    공식문서
    Next.js
    클론 프로젝트
    리액트
    Jiraynor Programming
    블로그 제작
    컴퓨터네트워크
    타입스크립트
    React
    프로젝트
    파이썬
    d3
    플러터
    bfs
    자바스크립트
    자바
    포트폴리오
    강의내용정리
    뉴렉처
    SWEA
    AWS
    구현
    백준
    Til
    spring boot
    프로그래머스
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[프로그래머스] 완전탐색 "모의고사" (파이썬)
상단으로

티스토리툴바