본문 바로가기
  • 삽질하는 자의 블로그
9. [실전] - 택배상자 문제 택배상자를 트럭에 싣는다. 크기는 모두 같으며, "1번 부터 n번 상자"까지 "번호가 증가하는 순서대로 컨테이너 벨트에 놓여, 영재에게 온다." "컨테이너 벨트는 한방향으로만 움직인다". 상자는 "1번부터 내릴 수 있다" "1번부터 내려, 트럭에 싣게되면, 배달순서와 달라져 곤욕을 치른다." 따라서, "택배기사의 오더에 따라 택배상자를 실어야한다." 만약 벨트의 맨앞에 놓인 상자가, 현재 실어야 할 상자가 아니라면, "보조 컨테이너 벨트"에 올려둔다. 보조컨테이너 벨트는 양방향으로 전부 움직이지만, 입구가 하나다. 즉, "가장 마지막에 벨트에 보관한 상자부터 꺼낼 수 있다." "보조 컨테이너 벨트를 이용해도 기사님이 원하는 순서대로 상자를 싣지 못 한다면, 더 이상 상자를 싣지 않습니다." 택배기사.. 2023. 1. 18.
8. [실전] - 문자열 나누기 문제 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, "x"와 "x가 아닌 다른 글자들이 나온 횟수"를 각각 셉니다. "처음으로 두 횟수가 같아지는 순간 멈추고", "지금까지 읽은 문자열을 분리합니다." s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. s는 영어 소문자로만 이루어져 있습니다. 예시 s result "banana" 3 ".. 2023. 1. 18.
7. [실전] - 우박수열 문제 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2.결과로 나온 수가 1보다 크다면 1번 작업을 반복합니다. 5 ⇒ 16 ⇒ 8 ⇒ 4 ⇒2 ⇒ 1 우박수열을 좌표 평면 위에 꺾은선 그래프로 나타내보려고 합니다. 초항이 K인 우박수열이 있다면, x = 0일때 y = K이고 다음 우박수는 x = 1에 표시합니다. 이런 식으로 우박수가 1이 될 때까지 점들을 찍고 인접한 점들끼리 직선으로 연결하면 다음과 같이 꺾은선 그래프를 만들 수 있습니다. 이렇게 만든 꺾은선 그래프를 정적분 해보고 싶어졌습니다. x에 대한 어떤 범위 [a, b]가 주어진다면 이 범위에 대한 정적분 결과는 꺾은선 그래프와 x = a, x = b, y = 0 으로 둘러 쌓인 공.. 2023. 1. 18.
6. [실전] - 연속 부분 수열 합의 개수 문제 어느 날 철호는 어떤 "자연수로 이루어진" "원형 수열"의 "연속하는 부분 수열의 합" 으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 "일반적인 수열에서 처음과 끝이 연결된 형태의 수열"을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다. 4 7 1 9 1 원형 수열은 처음과 끝이 연결되어 끊기는 부분이 없기 때문에 연속하는 부분 수열도 일반적인 수열보다 많아집니다. 원형 수열의 모든 원소 elements가 순서대로 주어질 때, "원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수"를 return 하도록 solution 함수를 완성해주세요. 예시 [입출력 예] elements result [7,9,1,1,4] .. 2023. 1. 18.
5. [실전] - 귤 고르기 문제 귤을 크기별로 분류했을때, 서로 다른 종류의 개수를 최소화 하려 한다. 예로 귤을 8 개 수확했는데, 크기가 [1,3,2,5,4,5,2,3] 이였다. 귤을 6개 판매하고 싶다면, 크기가 1,4인 귤을 제외한 6개를 담으면 귤을 크기는 2,3,5 로 총 3가지가 되며, 이때 서로 다른 종류가 최소다 즉, 중복되는 숫자가 가장 적은 귤을 하나씩 제거하면 되겠다. 상자에 담으려는 귤의 갯수 k 귤의 크기를 담은 배열 tangerline 이 주어질때, 귤 k 개를 고를때, "서로다른 종류의 수의 최솟값"을 return 해보자 예시 ktangerine result 6[1, 3, 2, 5, 4, 5, 2, 3]3 // 2,3,5 (1,4가 제일적음) 4[1, 3, 2, 5, 4, 5, 2, 3]2 // 5 ,.. 2023. 1. 18.
4. [실전] - 명예의 전당(1) 문제 매일 가수가 한명씩 출연한다. 출연한 가수가, 지금까지 출연했던 가수들의 점수중 상위 k 번째 이내에 들게 되면 가수의 점수를 명예의 전당에 올린다. 즉, 시작 이후, k일 까지는 모든 출연 가수의 점수가 명예의 전당에 올라간다. k일 다음부터는 출연 가수의 점수가 기존 명예의 전당(k순위까지 있는) 의 점수보다 높으면, 출연 가수는 명예의 전당에 오른다. 기존 k번째 순위인 점수는 명예의 전당에서 내려온다. "발표 점수"는 k번째 순위중 최하위 점수이다. 매일 발표된 명예의 전당의 순위중 "최하위 점수를 return" 하라 예시 k는 3일경우 (기록되는 순위가 3등까지) 일차 1 2 3 4 5 6 7 점수 10 100 20 150 1 100 200 명예전당 10 100 100 150 150 150.. 2023. 1. 18.
3. [실전] - 가장 가까운 글자찾기 문제 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다.. 2023. 1. 18.
2. [실전] - 연속되는 자연수 배열중 빈 숫자 찾기 문제 1. -10000 ~ 10000 까지의 정수배열 A 에 대하여, 최소 값은 1이며, 배열중 비어있는 수중 가장 작은 수를 구하기 예시 A = [1,2,3,4]// 5 A = [1,2,3,5,6]// 4 A = [-20,-1]// 1 A = [1,3,6]// 2 프로세스 1. max 값이 - 면 1을 반환한다. 2. 이외에는 하나씩 올려가며 찾는다. 3. 찾았으면 break 로 중지하고, 반환한다. 사용 1. for문 2. break 내코드 function solution(A) { let answer; for (let i = 1; i < 100000; i++) { // for문 돌리고 answer = i;// 몇번 돌렸나 answer if (Math.max(A) 2023. 1. 18.
1. [이론] 자주 쓰는 패턴 총 정리 - 배열편 배열 1. 배열의 문자 검색후 인덱스반환 - indexOf, lastIndexOf() indexOf("string") indexOf("string", 시작index ) lastIndexOf("string") // 뒤에서 부터 검색 lastIndexOf("string", 시작index) // num 자리부터 왼쪽으로 검색 * lastIndexOf 는 뒤의 숫자를 2 라고 하면, index 2 부터 좌측으로 검색한다. 예시 const beasts = ['ant', 'bison', 'camel', 'duck', 'bison']; console.log(beasts.indexOf('bison'));// 1 console.log(beasts.indexOf('bison', 2));// 4 2. 배열의 범위지정 - S.. 2023. 1. 18.