Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Security
- 생성
- 자바
- Java
- Vue
- 코틀린
- 방법
- mybatis
- oracle
- Spring
- 넥사크로
- Git
- IntelliJ
- 스프링
- db
- 알고리즘
- 오라클
- GitHub
- 에러
- Eclipse
- aws
- 쿼리
- 시큐리티
- JavaScript
- 프로그래머스
- error
- kotlin
- JPA
- 함수
- jquery
Archives
- Today
- Total
송민준의 개발노트
프로그래머스-level1-체육복(탐욕법) 본문
https://programmers.co.kr/learn/courses/30/lessons/42862#
최초 풀었던 코드..
테스트케이스는 통과를 하는데 채점에서 테스트11만 정답이고 다 틀렸다고 나온다....
class Solution {
public static void main(String args[]) {
Solution s = new Solution();
int[] lost = {3};
int[] reserve = {1};
System.out.println(s.solution(3, lost, reserve));
}
public int solution(int n, int[] lost, int[] reserve) {
int answer = n;
for(int i = 0; i < lost.length; i++) {
for(int j = 0; j < reserve.length; j++) {
if(lost[i] != 0 && reserve[j] != 0 && Math.abs(lost[i]-reserve[i]) == 1) {
lost[i] = 0;
reserve[i] = 0;
}
}
}
int cnt = 0;
for(int i = 0; i < lost.length; i++) {
if(lost[i] != 0) {
cnt +=1;
}
}
return answer-cnt;
}
}
문제인 나의 코드....
class Solution {
public static void main(String args[]) {
Solution s = new Solution();
int[] lost = {2, 4};
int[] reserve = {1, 3, 5};
System.out.println(s.solution(5, lost, reserve));
}
public int solution(int n, int[] lost, int[] reserve) {
int answer = n;
for(int i = 0; i < lost.length; i++) {
for(int j = 0; j < reserve.length; j++) {
if(lost[i] != 0 && reserve[j] != 0 && Math.abs(lost[i]-reserve[i]) == 1) {
lost[i] = 0;
reserve[i] = 0;
break;
}
}
if(!(lost[i]==0)) {
answer -=1;
}
}
return answer;
}
}
코드를 더 줄여보았지만.... 테스트 결과는 그대로...ㅠㅠ
=====================================================================
나중에 마음을 비우고 다시 풀어봄.(제한사항을 잘 참고하여)
접근 방식은 전체 수 - 잃어버린 사람 수를 기준으로
빌린만큼(일치) 다시 더해준다.
제한사항에 '잃어버렸지만 여벌이 있는 사람은 다른 사람에 대여가 안된다.'를 참고하여
얘네부터 먼저 빼주고 바로 옆번호인 사람을 빼주었다.(테스트케이스 마지막 유형인듯)
속도도 양호^^
import java.util.Arrays;
class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = n-lost.length;
for(int i = 0; i < lost.length; i++) {
for(int j=0; j < reserve.length; j++) {
if(lost[i]-reserve[j] == 0) {
answer+=1;
lost[i] = -20;
reserve[j] = -10;
break;
}
}
}
for(int i = 0; i < lost.length; i++) {
for(int j=0; j < reserve.length; j++) {
if(Math.abs(lost[i]-reserve[j]) == 1) {
answer+=1;
reserve[j] = -10;
break;
}
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스-level1-수박수박수박수박수? (0) | 2019.11.01 |
---|---|
프로그래머스-level1-문자열 압축 (0) | 2019.11.01 |
프로그래머스-완주하지 못한 선수 (0) | 2019.10.26 |
프로그래머스-가운데 글자 가져오기 (0) | 2019.10.25 |
프로그래머스-이상한 문자 만들기(JAVA) (0) | 2019.10.24 |