알고리즘/프로그래머스 47

[프로그래머스] 두 큐 합 같게 만들기 for JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 보고 약간 당황한 문제이다. 문제 자체의 이해는 쉽다. 문제를 보고 특정 알고리즘이 그닥 떠오르지 않았다. 이게 그리디하게 풀리지 않는다면.. 내가 풀 수 없는 어떤 알고리즘을 사용하는거거나 엄청난 수학 문제구나 생각함. 결론부터 말하자면 그리디가 맞았다. 두 큐가 숫자를 계속 옮겨갈건데 그리디하게 한쪽이 크면 작은 쪽으로 옮기는 방식을 선택했고 가장 고민했던 부분은 어떤 방법으로도 원소..

[프로그래머스] 보급로 for JAVA

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 딱 보고 전형적인 BFS 문제로 추정했다. (0,0) ~ (N-1, N-1)까지 가는 최소 비용을 구하는 문제이다. 대신 가는 곳마다 weight가 있고 그 자리에 갈 수 있는 최소 weight를 구해야 하므로... 넘넘 까다로웠다! 처음에는 그냥 BFS 구현 딱 하고 visited 처리 해줬는데 이렇게 하면 구불구불한 길이 정답일 때가 구현이 안돼서 매우매우 고민하다가... 정말 귀찮아서 하기 싫..

[프로그래머스] 로또의 최고 순위와 최저 순위 for JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 숫자가 0인 것을 모두 맞았다고 가정했을 때 최고의 등수, 다 틀렸다고 가정했을 때 최저의 등수인 문제이다. import java.util.*; class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; Set win_num = new HashSet(); f..

[프로그래머스] 입국심사 for Java

https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 입국심사를 n명이 하는데에 걸리는 최소 시간을 구하는 문제이다. 근데 이제 대기자가 1,000,000,000명을 곁들인... 10억..명....? 그리고 각 심사관이 한 명을 심사하는데 걸리는 시간도 1분 이상 1,000,000,000분 이하이다. 이렇게 큰 수가 나오면 의심해볼 것 : 이분탐색 그래서 이분탐색으로 방향을 잡았다. 이분탐색이라 하믄.... left, mid, right를 정하고 반..

[프로그래머스] 모의고사 for Python

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 모의고사 문제 다시풀었다. def solution(answers): answer = [] math1 = [1, 2, 3, 4, 5] math2 = [2, 1, 2, 3, 2, 4, 2, 5] math3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] m1 = 0 m2 = 0 m3 = 0 for i in range(len(answers)): if mat..

[프로그래머스] 완주하지 못한 선수 for Python

https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 그냥 리스트 쓰려고 했는데 효율성 틀림 def solution(participant, completion): for i in completion: participant.remove(i); return ''.join(participant) 해시 문제니까 딕셔너리를 써보려고욧 def solution(participa..

[프로그래머스] 소수 만들기 for Python

https://programmers.co.kr/learn/courses/30/lessons/12977?language=python3 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 입력 nums 중에 3개를 순서없이 뽑아내야 하므로 조합을 사용해야 한다. 파이썬 내장 함수를 사용할 수 있음 from itertools import combinations combinations(arr, 3) 이렇게 사용하면 된다. 그리고 소수인지 판별하는 방법은 import math def is_prime_n..

[프로그래머스] 신고 결과 받기 for Python

https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 진짜 대박.... 다 통과하기 개어렵다. 내가 푼 방법(틀림) def solution(id_list, report, k): report_num = [0] * len(id_list) stop_nik = [] answer = [0] * len(id_list) for i in range(len(report)): report[i] = report[i].split..

[프로그래머스] 크레인 인형뽑기 게임 for Python

https://programmers.co.kr/learn/courses/30/lessons/64061?language=python3 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 파이썬으로 구현했다. 원래 스택을 쓰려고 했는데... 음~ 그냥 리스트 썼다. def solution(board, moves): answer = 0 my_doll = [] for out in moves: for i in range(len(board)): if board[i][out - 1] != 0: if len(my_doll) == 0: # 인형 쌓는곳이 ..

[프로그래머스] 키패드 누르기 for Python

https://programmers.co.kr/learn/courses/30/lessons/67256?language=python3 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 파이썬으로 다시 풀었다. 자바로 풀었을 때 누구꺼 참고했던 것 같은데... https://ticssfm.tistory.com/42?category=1014765 midR: answer += 'R' R = num[i] els..