level2 프로그래머스 JS 최솟값 만들기 두 배열이 주어지고 두 배열의 인자 값들을 곱해서 누적값을 만들때 최솟값이 되도록 만들면 된다. 배열 순서대로 곱해서 누적값을 만드는 것이 아니고 랜덤으로 곱해서 누적값을 만들때 최솟값이 되면 된다. level2 문제여서 사실 문제가 이렇게 쉽게 풀려도 될까? 라는 생각도 했었다. 처음 문제를 접할때 재귀 함수를 써서 구해야 하나 , 스택과 큐를 써야 하나 고민을 했었다. 여지껏 이런 문제들... jslevel2최솟값만들기프로그래머스js [pro] 가장 큰 수 이 문제에서 핵심은 바로 앞 자리 수가 같은 문자열(수)들을 어떻게 배열하는가이다. 예를 들어 '6', '64', '600', '60'이 있을 경우, sorted() 함수에 넣고 오름차순 정렬해주면 ['6', '60', '600', '64']가 된다. 그러나 가장 큰 수를 만들어 주려면 정렬이 ['6', '64', '60', '600'] 이렇게 되어야 한다. 계속 앞자리 수부터 하나씩 뒤로 ... 다시풀문제코딩테스트정렬프로그래머스level2level2 Programers : 구명보트 (greedy) 같이 탈 수 있는 사람과 탔을 때, 가장 여유공간이 적게 남는 경우가 효율적! 해당 경우를 찾기 위해 이중 for문을 썼더니 효율성 검사에서 실패함 같은 결과를 내지만 정렬 후 head / tail로 접근을 하면 훨~씬 빠르다! (..이런게 알고리즘의 힘인가) 주의해야 할 점은 반드시 tail에 해당하는 사람은 태워야 한다는 것이다! -> 무게가 적은 사람들 끼리 있을 때 함께 탈 수 있는 ... level2PROGRAMERSPROGRAMERS Programers : 수식 최대화 -next_permutation() key point! : 연산자의 종류 개수에 따라 가능한 조합을 구하는 것이 관건 <algorithm> 에 next_permutation()을 이용하면 현재 조합에서 다음 순열을 구할 수 있음! tmp배열에 [0, 1, 2, 3, 4] 가 있을 때 [0,1,2,3,4] ~ [4,3,2,1,0] 까지 모든 조합으로 바꾸어 준다 반환형은 bool형이기 때문에 조건으로 사용! prev_permut... level2PROGRAMERSPROGRAMERS Programers : 조이스틱 (greedy) key point! 1) 조이스틱을 위/아래로 움직이는 것의 선택은 min을 이용해 해결 2) 조이스틱을 왼쪽/오른쪽 으로 움직이는 것의 선택은 먼저 'A'가 아닌 요소가 발견할 때 까지 찾기 --> 바꾼 name의 값을 'A'로 치환해주는 작업이 필요!... level2PROGRAMERSPROGRAMERS Programers : 주식 가격 (stack) 직관적인 풀이법 시간복잡도가 아슬아슬해 보인다 O(N^2) 보다 효율적이게 만드려다가 시간이 많이 소모되었다. (이럴 때에는 한번 해보는게 더 좋아보인다ㅠㅠ) 스택을 사용한 방법이 더 빠른 해결 방법! 값이 아닌 인덱스를 활용한 것이 key point!... level2PROGRAMERSPROGRAMERS 42842 - 카펫 Description Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주... level2완전탐색프로그래머스알고리즘level2 LEVEL2/2개 이하로 다른 비트 비트 문제에 약한 나한테는 level2중에서 어려웠던 문제. 해결책은 간단하다. 첫 번째로 numbers의 원소가 짝수라면 가장뒤에 있는 0을 1로 바꾸어주면 된다. 그게 아닌 홀수라면 가장뒤에 있는 0을 찾아 1로 바꾸고 +1한 그 다음의 인덱스를 찾아 0으로 바꾸어 주면 된다.... level2programmerslevel2 Programmers / 21.01.12 Carpet 문제설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫... level2프로그래머스파이썬level2 LEVEL2/기능개발 progresses 가 0이 아닐때까지 while 반복문을 사용해준다. 이때 (progresses[0] + time* speeds[0]) >= 100 를 만족하면 큐의 개념인 FIFO대로 progresses의 0번째 인덱스와 speeds의 0번째 인덱스를 pop해주고 count 에 +1을 해준다. 만약 앞의 조건을 만족하지 못했을때 count가 0보다 크다는 것은 앞의 작업이 100 이상이 ... queuelevel2programmerslevel2 Programers : [3차] n진수 게임 어려워 보였지만 생각보다 쉬웠음! 10진법이 넘어갈 경우 알파벳으로 치환해야하는데 number 배열을 이용하는 좋은 방법을 배움!... level2PROGRAMERSPROGRAMERS 프로그래머스 Level2 더 맵게 Python 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는... level2프로그래머스파이썬level2 Programers : 문자열 압축 (2020 KAKAO BLIND RECRUITMENT) 문자열이 n일때에 [ 1 ~ n/2개 ]의 단위로 자를 때 까지 개수를 구한 뒤 최소를 구해야 함 3중 for문으로 구조가 구성됨 1) slice for문 : 1 ~ n/2개 단위로 자르는 큰 틀 2) 비교 할 기준이 되는 문자 for문 3) 비교 할 대상이 되는 문자 for문 예외로 문자열이 1일 때 바로 return 처리를 해주어야 한다... level2PROGRAMERSPROGRAMERS Programers : 짝지어 제거하기 단순히 string에서 삭제하는 방식으로 하면 --> O(N^2) 효율성과 관련한 문제에 부딛히면 '자료구조'를 바꾸는 것을 생각해보기! 이전 값과 현재 값의 상관관계가 있는 경우 stack을 고려해보자!... level2PROGRAMERSPROGRAMERS Programers : N개의 최소공배수 (GCD / LCM) 모든 수를 대상으로 최소 공배수를 구하려면 각 약수들의 최대 차수들의 곱이 필요하다고 생각했음 그래서 모든 수의 약수를 구했고, 최대 값들만 map에 저장하여 계산했음 밑에 풀이가 더 간단하고 똑똑한 풀이! key point! : 앞에 2개씩 차례차례 최소 공배수를 구하면 결국 모든 수의 최소공배수를 구할 수 있음 최대공약수를 구하는 GCD와 최소공배수를 구하는 LCM을 만드는 함수는 외워두... level2PROGRAMERSPROGRAMERS [프로그래머스] 메뉴 리뉴얼 -Java 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로... level2프로그래머스알고리즘level2 Programers : 최댓값과 최솟값 (sstream) stringstream을 사용할 때 끝을 검사하기 위해 ss.eof()를 이용하면 된다 int 자료형으로 받을 때 음수도 잘 받아온다!... level2PROGRAMERSPROGRAMERS rogramers : 땅따먹기 - C++ 문제 : N이 너무 커서 시간초과 key point! : DP의 핵심인 메모제이션(memoization)을 사용해야 한다... level2DPPROGRAMERSDP
프로그래머스 JS 최솟값 만들기 두 배열이 주어지고 두 배열의 인자 값들을 곱해서 누적값을 만들때 최솟값이 되도록 만들면 된다. 배열 순서대로 곱해서 누적값을 만드는 것이 아니고 랜덤으로 곱해서 누적값을 만들때 최솟값이 되면 된다. level2 문제여서 사실 문제가 이렇게 쉽게 풀려도 될까? 라는 생각도 했었다. 처음 문제를 접할때 재귀 함수를 써서 구해야 하나 , 스택과 큐를 써야 하나 고민을 했었다. 여지껏 이런 문제들... jslevel2최솟값만들기프로그래머스js [pro] 가장 큰 수 이 문제에서 핵심은 바로 앞 자리 수가 같은 문자열(수)들을 어떻게 배열하는가이다. 예를 들어 '6', '64', '600', '60'이 있을 경우, sorted() 함수에 넣고 오름차순 정렬해주면 ['6', '60', '600', '64']가 된다. 그러나 가장 큰 수를 만들어 주려면 정렬이 ['6', '64', '60', '600'] 이렇게 되어야 한다. 계속 앞자리 수부터 하나씩 뒤로 ... 다시풀문제코딩테스트정렬프로그래머스level2level2 Programers : 구명보트 (greedy) 같이 탈 수 있는 사람과 탔을 때, 가장 여유공간이 적게 남는 경우가 효율적! 해당 경우를 찾기 위해 이중 for문을 썼더니 효율성 검사에서 실패함 같은 결과를 내지만 정렬 후 head / tail로 접근을 하면 훨~씬 빠르다! (..이런게 알고리즘의 힘인가) 주의해야 할 점은 반드시 tail에 해당하는 사람은 태워야 한다는 것이다! -> 무게가 적은 사람들 끼리 있을 때 함께 탈 수 있는 ... level2PROGRAMERSPROGRAMERS Programers : 수식 최대화 -next_permutation() key point! : 연산자의 종류 개수에 따라 가능한 조합을 구하는 것이 관건 <algorithm> 에 next_permutation()을 이용하면 현재 조합에서 다음 순열을 구할 수 있음! tmp배열에 [0, 1, 2, 3, 4] 가 있을 때 [0,1,2,3,4] ~ [4,3,2,1,0] 까지 모든 조합으로 바꾸어 준다 반환형은 bool형이기 때문에 조건으로 사용! prev_permut... level2PROGRAMERSPROGRAMERS Programers : 조이스틱 (greedy) key point! 1) 조이스틱을 위/아래로 움직이는 것의 선택은 min을 이용해 해결 2) 조이스틱을 왼쪽/오른쪽 으로 움직이는 것의 선택은 먼저 'A'가 아닌 요소가 발견할 때 까지 찾기 --> 바꾼 name의 값을 'A'로 치환해주는 작업이 필요!... level2PROGRAMERSPROGRAMERS Programers : 주식 가격 (stack) 직관적인 풀이법 시간복잡도가 아슬아슬해 보인다 O(N^2) 보다 효율적이게 만드려다가 시간이 많이 소모되었다. (이럴 때에는 한번 해보는게 더 좋아보인다ㅠㅠ) 스택을 사용한 방법이 더 빠른 해결 방법! 값이 아닌 인덱스를 활용한 것이 key point!... level2PROGRAMERSPROGRAMERS 42842 - 카펫 Description Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주... level2완전탐색프로그래머스알고리즘level2 LEVEL2/2개 이하로 다른 비트 비트 문제에 약한 나한테는 level2중에서 어려웠던 문제. 해결책은 간단하다. 첫 번째로 numbers의 원소가 짝수라면 가장뒤에 있는 0을 1로 바꾸어주면 된다. 그게 아닌 홀수라면 가장뒤에 있는 0을 찾아 1로 바꾸고 +1한 그 다음의 인덱스를 찾아 0으로 바꾸어 주면 된다.... level2programmerslevel2 Programmers / 21.01.12 Carpet 문제설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫... level2프로그래머스파이썬level2 LEVEL2/기능개발 progresses 가 0이 아닐때까지 while 반복문을 사용해준다. 이때 (progresses[0] + time* speeds[0]) >= 100 를 만족하면 큐의 개념인 FIFO대로 progresses의 0번째 인덱스와 speeds의 0번째 인덱스를 pop해주고 count 에 +1을 해준다. 만약 앞의 조건을 만족하지 못했을때 count가 0보다 크다는 것은 앞의 작업이 100 이상이 ... queuelevel2programmerslevel2 Programers : [3차] n진수 게임 어려워 보였지만 생각보다 쉬웠음! 10진법이 넘어갈 경우 알파벳으로 치환해야하는데 number 배열을 이용하는 좋은 방법을 배움!... level2PROGRAMERSPROGRAMERS 프로그래머스 Level2 더 맵게 Python 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는... level2프로그래머스파이썬level2 Programers : 문자열 압축 (2020 KAKAO BLIND RECRUITMENT) 문자열이 n일때에 [ 1 ~ n/2개 ]의 단위로 자를 때 까지 개수를 구한 뒤 최소를 구해야 함 3중 for문으로 구조가 구성됨 1) slice for문 : 1 ~ n/2개 단위로 자르는 큰 틀 2) 비교 할 기준이 되는 문자 for문 3) 비교 할 대상이 되는 문자 for문 예외로 문자열이 1일 때 바로 return 처리를 해주어야 한다... level2PROGRAMERSPROGRAMERS Programers : 짝지어 제거하기 단순히 string에서 삭제하는 방식으로 하면 --> O(N^2) 효율성과 관련한 문제에 부딛히면 '자료구조'를 바꾸는 것을 생각해보기! 이전 값과 현재 값의 상관관계가 있는 경우 stack을 고려해보자!... level2PROGRAMERSPROGRAMERS Programers : N개의 최소공배수 (GCD / LCM) 모든 수를 대상으로 최소 공배수를 구하려면 각 약수들의 최대 차수들의 곱이 필요하다고 생각했음 그래서 모든 수의 약수를 구했고, 최대 값들만 map에 저장하여 계산했음 밑에 풀이가 더 간단하고 똑똑한 풀이! key point! : 앞에 2개씩 차례차례 최소 공배수를 구하면 결국 모든 수의 최소공배수를 구할 수 있음 최대공약수를 구하는 GCD와 최소공배수를 구하는 LCM을 만드는 함수는 외워두... level2PROGRAMERSPROGRAMERS [프로그래머스] 메뉴 리뉴얼 -Java 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로... level2프로그래머스알고리즘level2 Programers : 최댓값과 최솟값 (sstream) stringstream을 사용할 때 끝을 검사하기 위해 ss.eof()를 이용하면 된다 int 자료형으로 받을 때 음수도 잘 받아온다!... level2PROGRAMERSPROGRAMERS rogramers : 땅따먹기 - C++ 문제 : N이 너무 커서 시간초과 key point! : DP의 핵심인 메모제이션(memoization)을 사용해야 한다... level2DPPROGRAMERSDP