본문 바로가기

전체 글

(163)
[BOJ / Node.js] 21921. 블로그 https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 문제 찬솔이는 블로그를 시작한 지 벌써 N일이 지났다. 요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다. 찬솔이는 X일 동안 가장 많이 들어온 방문자 수와 그 기간들을 알고 싶다. 찬솔이를 대신해서 X일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는지 구해주자. 입력 첫째 줄에 블로그를 시작하고 지난 일수 N와 X가 공백으로 구분되어 주어진다...
[Algorithm] 슬라이딩 윈도우(Sliding Window) 슬라이딩 윈도우(Sliding Window) 슬라이딩 윈도우 알고리즘은 투 포인터와 유사하지만, 부분 배열의 길이를 고정해서 탐색하는 방법 투 포인터와 달리 두 개의 포인터 변수를 사용하지 않고, 고정적인 부분 배열의 크기와 한 개의 포인터 변수를 알고 있다면, 부분 배열의 양끝의 연산으로 정확한 값을 도출해낼 수 있다. [1, 10, 3, 2, 23, 10, 12] 라는 배열이 주어졌을 때 예시 배열 안에서 네 개의 연속된 수열의 최댓값을 찾는다고 가정했을 때, ↓ ↓ [1, 10, 3, 2, 23, 10, 12] sum = 1 + 10 + 3 + 2 ↓ ↓ [1, 10, 3, 2, 23, 10, 12] sum = 10 + 3 + 2 + 23 (1을 빼주고, 23을 더해준 값) ↓ ↓ [1, 10, 3..
[Algorithm] 투 포인터(Two Pointer) 투포인터 알고리즘 투포인터는 두 개의 포인터를 기준으로 검색을 하며, 원하는 값을 찾는 알고리즘입니다. 두 개의 점을 시작점과 끝점으로 이용하게 되면, 데이터의 범위를 표현 가능하며, 메모리와 시간 효율성을 높일 수 있습니다. 사용 예제 1. 특정한 합을 가지는 부분 연속 수열 찾기 부분 연속 수열의 시작점(start)과 끝점(end)의 위치를 기록 특정한 부분합을 M이라 가정할 때 알고리즘은 아래와 같다. 시작점(start)과 끝점(end)이 첫 번째 원소의 인덱스(0)를 가리키도록 한다. 현재 부분합이 M과 같다면 카운트한다. 현재 부분합이 M보다 작으면 끝점(end)를 1 증가시킨다. 현재 부분합이 M보다 크거나 같으면 시작점(start)을 1 증가시킨다. 모든 경우를 확인할 때까지 2번부터 4번 ..
[CS] 소프트웨어 개발방법론(폭포수 모델, 애자일, 데브옵스) 소프트웨어 개발 방법론 ? 소프트웨어를 개발하는 방법에 대한 이론, 소프트웨어 개발과정, 절차, 방법, 산출물, 기법 도구 등을 체계적으로 정리하고 표준화 시킨 것을 말한다. 폭포수 모델 Why ? 1960년대 까지의 "선 코딩 후 수정"의 문제를 해결하기 위해 로이스가 제시한 모델이다. How ? 요구분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 순으로 이루어지고, 하향식 / 순차적인 개발 방식이다. 앞 단계가 완료되어야 다음 단계로 넘어갈 수 있다. Major Rules 앞 단계가 끝나야 다음 단계로 이동 다음 단계로만 이동이 가능 명세(문서)에 기반한 구현 Good Points 단계가 명확하고 이해하기 쉽다. 대규모 프로젝트도 관리하기 쉽다.(모든 일정이 산출되어, 관리 측면에서도 일정 조정..
[Programmers / JS] Lv 2. 연속 부분 수열 합의 개수 https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 철호는 수열을 가지고 놀기 좋아합니다. 어느 날 철호는 어떤 자연수로 이루어진 원형 수열의 연속하는 부분 수열의 합으로 만들 수 있는 수가 모두 몇 가지인지 알아보고 싶어졌습니다. 원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다. 예를 들어 수열 [7, 9, 1, 1, 4] 로 원형 수열을 만들면 다음과 같습니다. 원형 수열은 처음과 끝이 연결되어 끊기는 부..
[Programmers / JS] Lv.2 할인 행사 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. 예를 들어, 정현이가 원하는 제품이 바나나 3개, 사과..
[Algorithm] Big-O 관점에서의 배열과 객체 Big-O 관점에서의 배열과 객체 Object 객체는 정렬되어 있지 않은 key : value 형태의 자료형태이다. Insertion, Removal, Access 모두 상수시간 (O(1)) Searching은 선형 (O(N)) Object.keys, Object.values, Object.entries은 선형 시간 O(N) Object.hasOwnProperty는 상수시간 - O(1) Array 객체와 달리 데이터가 정렬이 되어있다. Access 는 상수시간 (O(1)) 배열의 맨 뒤에 데이터를 추가하는 것은 객체와 같이 상수시간이 소요된다. 하지만 맨 앞에 데이터를 추가하는 경우라면, index를 다시 설정해야하기 때문에 선형시간이 소요된다. 아래는 메소드 별 Big-O push - O(1) pop ..
[Algorithm] Big-O-Notation Big-O Notation 빅오 표기법의 필요성 여러가지 코드를 일반적으로 서로 비교하고 성능을 평가하는 방법. 코드의 성능을 얘기할 때 정확한 전문용어를 사용하는 것이 중요하다. 빅오를 이해하게 되면 문제가 어디서 나타나는지 찾기 쉬울 수 있다. // Code1 function addUpTo(n) { let total = 0; for(let i = 1; i

728x90