목록ALGORITHM (82)
정구리의 우주정복
문제 : https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 풀이 : 처음엔 기존의 arr 에서 제거할 생각을 하다가 그냥 다른 배열 answer 이랑 비교를 하면 아주 간단하게 해결되는걸 깨달았다 arr(i) 번째랑 answer(-1) 이 같지 않다면 연속되지 않는다고 생각을 하고 answer 에 i arr(i) 를 append 해줬다 코드 : def solution(arr): ans..
문제 : https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 소스코드: def solution(array, commands): answer = [] for i in range(len(commands)): sort_arr = sorted(array[commands[i][0]-1:commands[i][1]]) answer.append(sort_arr[commands[i][2]-1]) return answer list 를 조금 다룰줄 안다면 쉬운 문제였다
문제 : https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번� programmers.co.kr 풀이과정 : (탐욕법 문제라는데 잘 모르겠다) 1. n 만큼 list 로 만들어주기 (1을 가짐) 2. lost 는 -1 을 해주고 reserve 는 +1 을 해주기 3. for 문으로 0인애 앞뒤로 확인해서 2가 있는지 체크하기 ㄴ 2가 있으면 +1 해주고 -1 해주기 4. list 에 1 이상인 애들은 answer 에 +1 해주기 def soluti..
그리디 알고리즘이란 ? 당장 눈앞의 최적의 조건을 따르는 알고리즘 ! ex) 거스름돈 문제 주로 무조건 큰, 긴 , 작은 , 짧은 등등 극단적으로 접근한다는 점에서 '정렬'과 같이 쓰이는 경우가 많다 최적의 해를 보장하는 경우도 많지만 그렇지 못하는 경우가 더 많아서 DP(다이나믹 프로그래밍 ) 등을 사용할 수도 있다 ex) 거스름돈 문제 500,100,50,10 원의 동전으로 거스름돈을 반환해야 할 때 가장 적은양의 거스름돈을 반환하도록 해보자 !! 500원이 가장많아야하고 100->50->10 순서로 거슬러주면 된다 파이썬 코드 value = int(input()) #거스름돈 result = 0 #동전의 개수 result += value//500 #500으로 나눈것의 몫을 더해준다 value %= 5..
문제 : https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 풀이 : 반복되는 규칙을 list 에 넣어주고 i 로 나눠준걸 이용해서 정답인지 아닌지를 다룬다 그리고 최고로 많이 맞은 사람이 누군지 확인해준다 코드 : def solution(answers): answer = [] #각 수포자들이 찍는 법 su1=[1,2,3,4,5] su2=[2,1,2,3,2,4,2,5] su3=[3,3,1,1,2,2,4,4,..
문제 : https://programmers.co.kr/learn/courses/30/lessons/42576#qna 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 풀이과정 : 해쉬 문제라는데 내가 해쉬가 뭔지 잘 모른다 . . . 처음에는 list 로 만들어서 list 안에 같은 값이 있으면 remove 시켜주는걸 생각해서 만들었다 def solution(participant, completion): for i in completion: participant.remove(i) ans..
문제 : 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 입출력: 입출력 예 boardmovesresult [[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 생각해보기 : 0인지 아닌지 체크해주고 0이면 스택에 넣어주고 값이 있던 곳을 0으로 바꿔줌 ! 그 다음에 스택을 확인해서 같으면 pop 을 해준다 !!여..
문제 : 화이트씨는 다재다능한 사람입니다 . 그래서 그에겐 친구가 많습니다 . 하지만 불행하게도 그의 친구들은 다재다능하지 않습니다 . 각각의 친구는 2가지 주제에만 관심이 있고 다른 주제로 이야기하는 것을 싫어합니다 . 그래서 파티를 개최할 때마다 모두가 즐겁게 파티를 보내려면 어떤 친구들을 초대해야할지가 큰 문제입니다 . 화이트씨는 그 동안의 경험으로 초대된 친구 모두가 공통의 흥미있는 화제가 있을때 파티를 즐긴다는 것을 알았습니다 . 문자열 배열 first 와 second 가 주어집니다 . 화이트씨의 i번째 친구가 흥미있는 화제는 first[i] 와 second[i] 입니다. 즐거운 파티가 되려면 화이트씨가 초대할 수 있는 친구는 최대 몇명인지 리턴하세요. 입출력 값 예 : first = {fish..