주니어 기초 코딩공부/JAVA_programmers_코딩테스트
[PCCE] 프로그래머스 자바 기초 05 심폐소생술
jju_developer
2024. 9. 22. 09:51
728x90
배열의 길이는 length
리스트의 길이는 size
01 나의 코드
class Solution {
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<
basic_order.length
; i++){
for(int j=0; j<
answer.length
; j++){
if(cpr[i].equals(basic_order[j])){
answer[i] =
j+1
;
break;
}
}
}
return answer;
}
}
제 코드에는 문제점이 있습니다. 잘보세요!!!
02 다른 사람 코드
class Solution {
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;
}
}
- 루프의 조건:
- 다른사람의 풀이: for (int i = 0; i < cpr.length; i++)를 사용하여 cpr의 길이를 기준으로 반복합니다.
- 내 풀이: for (int i = 0; i < basic_order.length; i++)를 사용하여 basic_order의 길이를 기준으로 반복합니다.
이는 잘못된 접근으로, cpr 배열의 길이와 관련이 없습니다.
- 정확성:
- 다른사람의 풀이에서는 cpr의 각 요소를 basic_order와 비교하여 정확한 인덱스를 answer 배열에 저장합니다.
- 내 풀이에서는 cpr의 길이와 관계없이 basic_order의 길이만큼 반복하므로,
cpr의 요소가 충분하지 않거나 초과되는 경우에는 잘못된 결과를 초래할 수 있습니다.
- 성능:
- 두 풀이 모두 이중 루프를 사용하여 O(n * m) 성능을 가집니다.
여기서 n은 cpr의 길이, m은 basic_order의 길이입니다. - 그러나 내 풀이의 경우 잘못된 루프 조건으로 인해 성능이 저하되고 논리적 오류가 발생할 수 있습니다.
- 두 풀이 모두 이중 루프를 사용하여 O(n * m) 성능을 가집니다.
결론은 length로 길이 비교할때
정확인 비교 대상과 비교하자!!!
728x90