본문 바로가기

전체 글

(46)
[프로그래머스] [Python] 가장 큰 수 문제 풀이 def solution(numbers): # map을 사용하여 numbers를 str타입으로 고정. numbers = list(map(str, numbers)) # 하단 설명 참조 numbers.sort(key=lambda x: x * 3, reverse=True) # ['0', '0', '0', '0'] 같이 0으로만 이루어진 배열을 대비하기 위함 # 이런 배열이 나오게 되면 "0000"으로 반환될 수 있기 때문에 # 안에서 int타입으로 변환하여 숫자를 뽑은 후 다시 str타입으로 변경하여 리턴한다. # ''.join()은 배열내의 각 문자열을 하나로 합쳐주는 내장함수이다. return str(int(''.join(numbers))) 1. lambda x : x * 3 - numbers의 ..
[프로그래머스] [C++] 가장 큰 수 문제 풀이 #include #include #include using namespace std; // 배열에서 인접한 두 원소를 더하여 그 중 더 큰 순서대로 원소를 배열한다. // ex) '6' + '10'= '610' | '10' + '6' = '106' // string 형태이기 때문에 사용 가능하다. bool st_cmp(string a, string b) { return a + b > b + a; } string solution(vector numbers) { string answer = ""; vector s; // numbers에 있는 원소들을 string 타입으로 변경하여 s에 삽입 for (int i = 0; i < numbers.size(); i++) { string tmp = to_s..
[프로그래머스] [Python] K번째 수 문제 풀이 def solution(array, commands): answer = [] # 시작 인덱스, 마지막 인덱스, 그리고 K번째 숫자를 commands에서 가져온다. for startidx, endidx, numK in commands: # 시작 인덱스와 K번째 숫자에 -1을 하는 이유는 배열 인덱스가 0부터 시작하기 때문이다. # 마지막 인덱스에 -1을 하지 않는 이유는 '미만'처리가 되어 마지막 인덱스가 포함되지 않기 때문이다. 즉 -1이 이미 되어있다. # array의 [시작 인덱스 - 1 부터(:) 마지막 인덱스] 까지 가져온 후 정렬하여 sorted_array에 넣는다. sorted_array = sorted(array[startidx - 1:endidx]) # K번째 숫자는 numK-1..
[프로그래머스] [C++] K번째 수 문제 풀이 #include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; // 자동 정렬을 위한 우선순위 큐 생성. 오름차순으로 사용하기 위해 greater 사용 priority_queue pq; for (int i = 0; i < commands.size(); i++) { // command[i][0]부터 command[i][1]까지 우선순위 큐에 넣는다. // j-1을 하는 이유는 배열의 인덱스가 0부터 시작하기 때문. for (int j = commands[i][0]; j
[프로그래머스] [Python] 이중우선순위큐 문제 풀이 import heapq def solution(operations): answer = [] # 이중 우선순위 큐 생성. heapq로 사용할 예정이다. queue = [] # 배열이 빌 때까지 while len(operations): # operations[0]의 명령어가 I 숫자라면 # .split()은 공백을 기준으로 문자열을 자르는 것이다. () 안에 원하는 값을 넣으면 그 값을 기준으로 자를 수 있다. if operations[0].split()[0] == 'I': # 큐에 주어진 숫자를 삽입한다. 이 때 heapq를 사용하여 최소값이 가장 앞으로 오도록 자동 정렬하게 한다. # int 형식으로 바꾸어 넣어서 나중에 문자가 아닌 숫자로 출력되게 하였다. heapq.heappush(queu..
[프로그래머스] [C++] 이중우선순위큐 문제 풀이 #include #include #include #include using namespace std; vector solution(vector operations) { vector answer; // 자동 정렬을 위한 우선순위 큐 생성. 우선순위 큐는 "내림차순"으로 정렬된다! priority_queue pq; // operations를 돌면서 for (int i = 0; i < operations.size(); i++) { // 명렁어가 I 숫자라면 if (operations[i][0] == 'I') { // 공백 이후 숫자부분(substr(2))을 숫자로 바꾸어(stoi) 우선순위 큐에 저장 pq.push(stoi(operations[i].substr(2))); } // 우선순위 큐에 값이..
[프로그래머스] [Python] 디스크 컨트롤러 문제 풀이 def solution(jobs): answer = 0 # 작업의 시작 시간 start_time = 0 # 작업의 개수 jobs_cnt = len(jobs) # 소요시간이 낮은 순으로 정렬 jobs = sorted(jobs, key=lambda x: x[1]) # jobs 배열이 빌 때까지 while len(jobs): # 현재 jobs는 소요시간을 기준으로 정렬된 상태. 이제 여기에서 시작시간이 작은 순으로 찾는 작업을 한다. for i in range(len(jobs)): # 시작시간보다 작거나 같은 값을 찾는다. 소요시간은 이미 정렬되어 있기 때문에 # 시작시간이 같거나 낮은 값 중 가장 소요시간이 작은 순으로 나오게 된다 if jobs[i][0]
[프로그래머스] [C++] 디스크 컨트롤러 문제 풀이 #include #include #include using namespace std; // 두 번째 원소로 정렬하기 위함. // a b는 내림차순이다. bool cmp(vector a, vector b){ return a.back() < b.back(); } int solution(vector jobs) { // 작업의 시작 시간 int start = 0; // 작업의 개수 int jobs_cnt = jobs.size(); //소요시간이 낮은 순으로 정렬 sort(jobs.begin(), jobs.end(), cmp); // 배열이 빌 때까지 while (!jobs.empty()) { // 현재 jobs는 소요시간을 기준으로 정렬된 상태. 이제 여기에서 시작시간이 ..