
내가 생각했을때 문제에서 원하는부분
심폐소생술은 다음과 같은 순서를 통해 실시합니다.
심정지 및 무호흡 확인 [check]
도움 및 119 신고 요청 [call]
가슴압박 30회 시행 [pressure]
인공호흡 2회 시행 [respiration]
가슴압박, 인공호흡 반복 [repeat]
주어진 solution 함수는 심폐소생술을 하는 방법의 순서가 담긴 문자열들이 무작위 순서로 담긴 리스트 cpr이 주어질 때 각각의 방법이 몇 번째 단계인지 순서대로 담아 return하는 함수입니다.
solution 함수가 올바르게 작동하도록 빈칸을 채워 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
basic_order에는 심폐소생술의 정상 순서가 문자열로 저장되어 있다.
외부 반복문에서는 cpr 배열의 항목들을 하나씩 순회한다.
내부 반복문에서는 각 cpr[i]가 basic_order 배열 중 어느 위치인지 찾는다.
찾으면 해당 단계 번호(인덱스 + 1)를 answer[i]에 넣고 내부 반복문을 종료한다(break).
마지막에 answer 배열을 반환하면 각 단계의 순서를 번호로 알 수 있다.
코드로 구현
package programmers;
// 프로그래머스 5번 심폐소생술
public class Main5 {
public int[] solution(String[] cpr) {
int[] answer = {0, 0, 0, 0, 0};
String[] basic_order = {"check", "call", "pressure", "respiration", "repeat"};
for(int i=0; i<cpr.length; i++){
for(int j=0; j<basic_order.length; j++){
if(cpr[i].equals(basic_order[j])){
answer[i] = j + 1;
break;
}
}
}
return answer;
}
}
프로그래머스에서 빈칸 넣었을때 코드
package programmers;
import java.util.Arrays;
// 프로그래머스 5번 심폐소생술
public class Main5 {
public int[] solution(String[] cpr) {
int[] answer = {0, 0, 0, 0, 0};
String[] basic_order = {"check", "call", "pressure", "respiration", "repeat"};
for(int i=0; i<cpr.length; i++){
for(int j=0; j<basic_order.length; j++){
if(cpr[i].equals(basic_order[j])){
answer[i] = j + 1;
break;
}
}
}
return answer;
}
public static void main(String[] args) {
Main5 sol = new Main5();
String[] testInput = {"call", "respiration", "repeat", "check", "pressure"};
int[] result = sol.solution(testInput);
System.out.println(Arrays.toString(result)); // [2, 4, 5, 1, 3]
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.