[PCCE 기출문제] 5번 / 심폐소생술

2024. 9. 15. 18:00PCCE 기출문제

https://school.programmers.co.kr/learn/courses/30/lessons/340203

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
심폐소생술은 다음과 같은 순서를 통해 실시합니다.

  1. 심정지 및 무호흡 확인 [check]
  2. 도움 및 119 신고 요청 [call]
  3. 가슴압박 30회 시행 [pressure]
  4. 인공호흡 2회 시행 [respiration]
  5. 가슴압박, 인공호흡 반복 [repeat]

주어진 solution 함수는 심폐소생술을 하는 방법의 순서가 담긴 문자열들이 무작위 순서로 담긴 리스트 cpr이 주어질 때 각각의 방법이 몇 번째 단계인지 순서대로 담아 return하는 함수입니다. solution 함수가 올바르게 작동하도록 빈칸을 채워 solution 함수를 완성해 주세요.


제한사항

  • cpr은 다음 문자열들이 한 번씩 포함되어 있습니다.
  • "check", "call", "pressure", "respiration", "repeat"

입출력 예

cpr result
["call", "respiration", "repeat", "check", "pressure"] [2, 4, 5, 1, 3]
["respiration", "repeat", "check", "pressure", "call"] [4, 5, 1, 3, 2]

입출력 예 설명
입출력 예 #1

  • "call", "respiration", "repeat", "check", "pressure"은 각각 2, 4, 5, 1, 3 번째 순서이므로 [2, 4, 5, 1, 3]을 리턴합니다.

입출력 예 #2

  • "respiration", "repeat", "check", "pressure", "call"은 각각 4, 5, 1, 3, 2 번째 순서이므로 [4, 5, 1, 3, 2]를 리턴합니다.

빈칸 채우기 문제 안내

  • 빈칸 채우기는 이미 완성된 코드 중 빈칸에 알맞은 코드를 입력하는 문제 타입입니다.
  • 빈칸을 제외한 기본 코드는 수정할 수 없습니다.
  • 빈칸을 채우지 않을 경우, 실행 결과에 에러 메시지가 표시됩니다.

문제 코드

def solution(cpr):
    answer = []
    basic_order = ["check", "call", "pressure", "respiration", "repeat"]
    for action in [          ]:
        for i in [          ]:
            if action == basic_order[i]:
                answer.append([          ])
    return answer

심폐소생술의 영어 단어가 주어졌을 때, 해당 단어들이 몇 번째 순서에 속하는지 구하는 문제입니다.

 

cpr의 모든 단어가 심폐소생술의 단어라는 조건이 있으니까 index 함수를 사용하는 방법도 되지 않았을까 싶지만, 반복문도 못 구하는 건 아니니까요.

 

정답 코드를 작성해보겠습니다.

def solution(cpr):
    answer = []
    basic_order = ["check", "call", "pressure", "respiration", "repeat"]
    for action in cpr:
        for i in range(len(basic_order)):
            if action == basic_order[i]:
                answer.append(i + 1)
    return answer

 

1. cpr

2. range(len(basic_order))

3. i + 1

 

첫 번째 반복문은 반복가능한(iterable) 객체를 반복하는 방법이네요. cpr의 요소를 action이라는 이름으로 가져오겠다는 뜻입니다.

 

두 번째는 아랫줄에 보면 basic_order[i]라는 코드가 있습니다. 인덱스를 사용해서 요소를 가져오겠다는 뜻이므로, 모든 객체를 살펴볼 수 있도록 최대 길이인 range(len(basic_order))을 사용해줍니다.

 

마지막은 인덱스를 answer에 추가하는 과정인데요. 이 과정에서 (i + 1)을 사용하는 이유는 우리의 1번째가 컴퓨터의 0번째와 동일하기 때문에, 이 차이를 보정해주기 위해 1을 더해주는 것입니다.

 

반복문에 들어갈 요소들, 그리고 인덱스의 차이를 알면 간단히 풀 수 있는 문제입니다.