전체 글 151

[프로그래머스] 문자열 내 마음대로 정렬하기

출처 : 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1 programmers.co.kr 풀이 방법 lambda 함수를 사용하여 정렬을 하면 간단하게 풀이할 수 있다. 같은 문자가 2개 이상이면 같은 문자를 가지는 단어끼리는 사전 순으로 앞선 문자열이 앞쪽에 위치하도록 해야 하는데 이런 경우를 해결하기 위해 미리 lambda 함수를 사용 전 사전 순으로 정렬을 한 후 lambda ..

Algorithm 2021.02.24

[프로그래머스] 주식가격 (python)

출처 : 코딩테스트 연습 - 주식가격 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이 방법 이중 for 문으로 0번 인덱스 부터 자신보다 작은 값이 나올 때까지 for 문을 돌며 작은 값이 나오면 정답에 추가해주는 방식의 간단한 방법으로 풀었다. def solution(prices): answer = [0] * len(prices) for i in range(len(prices)-1): for j in range..

Algorithm 2021.02.23

[algostop] 고대어 사전 (c++)

출처 : algospot.com :: DICTIONARY algospot.com :: DICTIONARY 고대어 사전 문제 정보 문제 아마추어 고고학자인 일리노이 존스는 시카고 근교에서 고대 문명의 흔적을 찾아냈습니다. 그 흔적 중에는 이 언어의 사전도 포함되어 있었는데, 이 사전에 포함된 www.algospot.com 풀이 방법 각 단어를 비교해가며 먼저 나온 단어랑 바로 뒤에 나온 단어랑 앞글자 부터 비교해 가며 다른 글자가 나올시 앞 단어의 철자에서 뒤 단어의 철자로 가는 간선을 추가해주는 작업을 해서 그래프를 만든다. 그리고 위상 정렬을 이용해야 한다 위상정렬은 dfs에서 마지막에 재귀호출이 끝날 때 현재 지점을 반환해주면서 마지막에 반환된 값을 뒤집어 주면 된다. 만약 그래프가 DAG가 아니라면..

Algorithm 2021.02.22

[algospot] 변화하는 중간 값 (c++)

출처 : algospot.com :: RUNNINGMEDIAN algospot.com :: RUNNINGMEDIAN 변화하는 중간값 문제 정보 문제 한 수열의 중간값(median)은 이 수열을 정렬했을 때 가운데 오는 값입니다. 예를 들어 {3,1,5,4,2}를 정렬했을 때 가운데 오는 값은 3이지요. 수열의 길이가 짝수일 때 www.algospot.com 풀이 방법 문제의 핵심은 우선순위 큐를 두개를 이용하여 중간 값을 찾는 것이다. 하나는 최대 힙 하나는 최소 힙으 이용하여 최대 힙의 최대 원소가 최소 힙의 최소 원소보다 작거나 같게 만들고, 최대 힙의 원소 개수가 최소 힙의 원소 개수 보다 +1 크거나 같게 유지시켜주며 원소를 삽입시키면 중간 값은 최대 힙의 최댓값이 될 것이다. #include #..

Algorithm 2021.02.15

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

출처 : 코딩테스트 연습 - 키패드 누르기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 키패드 누르기 [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 풀이 방법 *, 0, #은 먼저 10, 11, 12로 매칭을 시킨다. 1, 4, 7은 따로 left_num이라는 배열에 저장을 해두고 3, 6, 9는 right_num이라는 배열에 저장해두고 numbers 배열을 돌아가며 숫자가 각 배열에 있을 시 answer..

Algorithm 2021.02.15

[프로그래머스] 3진법 뒤집기 (Python)

출처 : 코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 풀이 방법 십진법으로 표현된 수를 3진법으로 바꾸는 방법은 십진법 수를 3으로 몫이 0이 될 때까지 나눠가며 나머지를 큐에 넣은 후 하나씩 빼면 3진법으로 바꿀 수 있다. 문제에서 삼진법으로 만든 후 뒤집은 후 다시 십진법으로 만들어야 하므로 큐가 아닌 처음부터 스택에 나머지를 넣은 후 pop 을 해준후 다시 십진법으로 만..

Algorithm 2021.02.14

[algospot] 너드인가, 너드가 아닌가? (c++)

출처 : algospot.com :: NERD2 algospot.com :: NERD2 너드인가, 너드가 아닌가? 2 문제 정보 문제 대 성황이었던 지난 알고스팟 연간 모의고사 이후 프로그래밍 대회의 열기는 날로 뜨거워져 올해는 10만명이 넘는 사람들이 참가 신청을 할 것으로 www.algospot.com 풀이 방법 이 문제의 중요한 해결책은 문제 수와 라면 그릇 수를 좌표평면에 그려보는 것이다. 그려보게 되면 현재까지 등록되어 있는 너드들이 계단식으로 되어있다 즉 x 좌표가 작으면 y가 커야 하므로 오른쪽으로 갈수록 x좌표가 증가하고 y좌표는 감소하는 계단식이다. 여기서 새로운 사람이 추가되면 너드인지 아닌지 판별하기 위해 자신보다 x좌표가 큰 쪽만 보면 된다 왜냐하면 자신보다 x좌표가 작은 쪽은 x좌..

Algorithm 2021.02.14

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

출처 : programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 방법 완전 탐색문제로 1번, 2번, 3번 학생들은 자신의 규칙에 따라 반복해서 찍는다. ex) 1번은 1, 2, 3, 4, 5 반복 그러므로 답(answers)을 하나씩 돌아가며 answers의 인덱스에 각 학생의 반복하는 답의 개수를 나눈 나머지를 각각의 학생들의 답 배열에 넣어주어 나온 값과 answers를 비교하여 일치하면 score을 +1 씩 해주어서 점..

Algorithm 2021.02.11

[프로그래머스] 체육복 (c++)

출처 : 코딩테스트 연습 - 체육복 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이 방법 map 을 이용하여 체육복 여분이 있는 학생의 번호와 여분 여부를 저장하고 lostArr를 학생 수 만큼 할당하여 인덱스를 학생 번호로 벡터의 값을 잃어버림 유무로 잡아 저장하였다. 우선 여분을 가지고 있는데 잃어버린 학생을 먼저 처리 하였다 그 후 여분을 가지고 있는 학생의 앞 학생이 체육복을 잃어버렸으면 그 학생 우선 여분을 주고 만약 앞 학생이 잃어버리지 않았다..

Algorithm 2021.02.10