Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 위상정렬
- 삼성청년SW아카데미
- BFS
- 브루트포스
- 다이나믹프로그래밍
- ssafy
- python
- dfs
- DP
- 개발자스터디
- 코딩테스트
- 문자열
- 항해
- 너비우선탐색
- 깊이우선탐색
- 프로그래머스
- til
- 싸피
- 백트래킹
- 파이썬
- BOJ
- 백준
- 99클럽
- SSAFY수료식
- 알고리즘
- programmers
- java
- 자바
- 구현
- 99일지
Archives
- Today
- Total
EunJng
[PRO] 숫자 게임 | Java | Python 본문
문제
프로그래머스 코딩테스트 연습 > Summer/Winter Coding(~2018) 숫자 게임 | Lv.3
https://school.programmers.co.kr/learn/courses/30/lessons/12987
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
자바 풀이
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
int idx = 0;
for(int b : B) {
if(b > A[idx]) {
answer++;
idx++;
}
}
return answer;
}
}
- A에서 비교할 값의 인덱스를 idx라는 변수를 통해 저장
- 배열 두 개를 정렬한 뒤, B를 순회하면서 A의 해당 idx값보다 크다면 answer과 idx를 1씩 증가(A의 다음 원소를 비교하기 위해)
파이썬 풀이
def solution(A, B):
answer = 0
A.sort()
B.sort()
idx = 0
for b in B:
if b > A[idx]:
answer += 1
idx += 1
return answer
- 처음에 A를 내림차순으로 정렬한 뒤 for문을 사용하고, used라는 배열을 새로 만들어 사용하지 않은 B의 원소에 대해서 비교하도록 하였다.
이중for문이라 걱정했는데 역시나 시간초과 뜸(해당 풀이는 아래에)
따라서 idx라는 변수를 별도로 저장하여 for문 사용을 줄이고자 하였다. - A에서 비교할 값의 인덱스를 idx라는 변수를 통해 저장
- 배열 두 개를 정렬한 뒤, B를 순회하면서 A의 해당 idx값보다 크다면 answer과 idx를 1씩 증가(A의 다음 원소를 비교하기 위해)
처음 코드
# 시간초과된 풀이
def solution(A, B):
answer = 0
A.sort(reverse=True)
B.sort()
used = [0] * len(B)
for a in A:
for i in range(len(B)):
if not used[i] and a < B[i]:
used[i] = 1
answer += 1
break
return answer
자바 풀이 정확성 및 효율성
파이썬 풀이 정확성 및 효율성
'PROBLEM > PROGRAMMERS' 카테고리의 다른 글
[PRO] 택배 배달과 수거하기 | Python | Java (0) | 2023.06.18 |
---|---|
[PRO] 하노이의 탑 | Java (0) | 2023.06.15 |
[PRO] 게임 맵 최단거리 | Java (0) | 2023.06.13 |
[PRO] 키패드 누르기 | Java (0) | 2023.06.12 |
[PRO] 여행 경로 | Python (0) | 2023.05.08 |