일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- programmers
- Python
- LeetCode
- 프로그래머스
- C++
- 제노블레이드 2
- 알고리즘 종류 정리
- 알고리즘
- 격리수준
- 취준
- ASF-110
- 코딩테스트
- 네이버 검색 시스템
- Github
- Algorithmus
- DP
- baekjoon
- 백준
- 프로콘
- git
- Ultimate Search
- Pro-Con
- 프로콘 갈림현상
- 백트래킹
- algorithm
- python3
- 리트코드
- SRE
- GitHub Desktop
- 자소서
- Today
- Total
목록전체 글 (76)
산타는 없다
문제 원문 조건 시간 제한 : 1초 메모리 제한 : 256 MB 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. 출력 첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다. 예제 풀이 이 문제의 경우 주어지는 정수의 개수가 최대 40개 이므로 나올 수 있는 조합의 수를 계산하면 2^40이 됩니다. (이항정리의 파생 공식으로 nC₀ + nC₁ + nC₂ + nC₃ ..
작성한 소스코드는 빌드 과정을 통해 실행할 수 있는 실행파일이 됩니다. 각 언어별로 빌드하는 과정과 실행하는 방법이 다른데 C++의 경우 어떻게 빌드가 되는지 정리해 보겠습니다. C++ 컴파일러 C++의 빌드 과정에서 빼먹을 수 없는 것이 컴파일러입니다. C++의 경우 운영체제 별로 컴파일러가 다릅니다. 자바의 경우 자바 컴파일러가 소스코드를 바이트 코드로 변환시키고 만들어진 바이트 코드를 각 운영체제에 맞는 JVM 내에 로드하여 실행합니다. 때문에 자바는 운영체제에 맞는 JVM이 있다면 소스코드 수정 없이 프로그램을 실행할 수 있습니다. 하지만 C++은 운영체제 별로 컴파일러가 다르기 때문에 소스코드를 각 컴파일러에 맞게 수정해야되는 상황이 있을 수 있습니다. 빌드 과정 전체적인 과정을 그림으로 표현한..
문제 원문 조건 시간 제한 : 1초 메모리 제한 : 512 MB 문제 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)에 있는 미세먼지의 양을 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다. 공기청정기는 항상 1번 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼지가 있고, (r, c)에 있는 미세먼지의 양은 Ar,c이다. 1초 동안 아래 적힌 일이 순서대로 일어난다. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. ..
문제 원문 조건 시간 제한 : 1초 (추가 시간 없음) 메모리 제한 : 512 MB 문제 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 3가지 방향이 가능하다. 파이프는 매우 무겁기 때문에, 유현이는 파이프를 밀어서 이동시키려고 한다. 벽에는 새로운 벽지를 발랐기 때문에, 파이프가 벽을 긁으면 안 ..
문제 원문 조건 시간 제한 : 2초 (추가 시간 없음) 메모리 제한 : 128 MB 문제 상근이는 문자열에 폭발 문자열을 심어 놓았다. 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐지게 된다. 폭발은 다음과 같은 과정으로 진행된다. 문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다. 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다. 새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다. 폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다. 상근이는 모든 폭발이 끝난 후에 어떤 문자열이 남는지 구해보려고 한다. 남아있는 문자가 없는 경우가 있다. 이때는 "FRULA"를 출력한다. 폭발 문자열은 같은 문자를 두 개 이상 포함하지 않는다..
Select문은 SELECT [ALL(생략가능) / DISTINCT / DISTINCTROW] [테이블명.]속성명, [테이블명.]속성명, … FROM 테이블명 [AS 별칭] [, 테이블명…] [[RIGHT / LEFT] [OUTER] JOIN 테이블명 [AS 별칭]] [ON 조건] [WHERE 조건] [GROUP BY [CUBE / ROLLUP()] 속성명, 속성명, …] [HAVING 조건] [ORDER BY 속성명 [ASC(생략가능) / DESC]] [LIMIT 갯수]; 의 순서로 작성할 수 있습니다. ([]는 생략가능) 하지만 실제로 실행되는 순서는 다릅니다. 실행되는 순서를 정확하게 파악하고 있어야 정확한 Select Query를 작성할 수 있으므로 실행 순서를 알아보겠습니다. Select Que..
동적/공유 라이브러리는 런타임에 링크/로드되는 라이브러리입니다. 공유 라이브러리(Dynamic Linking)와 동적 라이브러리(Dynamic Loading)는 똑같이 런타임에 메모리에 적재되는데 공유 라이브러리는 응용 프로그램이 시작되는 순간에 메모리에 적재되고 동적 라이브러리는 응용 프로그램이 라이브러리의 내용이 필요할 때 적재하게 됩니다. 동적 라이브러리는 이를 사용하고자 하는 실행 바이너리에서 필요시 사용할 수 있도록 최소한의 정보만 포함하여 링크하거나, 아예 독립적으로 로드/사용/해제할 수 있습니다. 동적 라이브러리의 특징 동적 라이브러리는 정적 라이브러리와 다르게 컴파일할 때 코드가 복사되지 않고 프로그램 시작 시 로딩됩니다. 이때 메모리에 이미 로딩되어 있다면 라이브러리 코드 영역을 공유해서..
정적 라이브러리는 컴파일타임에 링킹되는 라이브러리입니다. 정적 라이브러리가 링킹되는 것을 정적 링킹(Static Linking)이라고 합니다. 정적 링킹은 실행파일을 만들 때 프로그램에서 사용하는 모든 라이브러리 모듈을 복사하는 방식을 말하며 링커에 의해 이루어집니다. 즉, 자신이 작성한 프로그램에서 A라는 외부 함수를 사용했다면, A라는 외부 함수에 대한 정보를 자신이 작성한 프로그램의 실행파일을 만들 때 복사해 옵니다. 이렇게 모든 라이브러리 모듈을 복사하기 때문에 실행시 별도의 라이브러리 파일이 필요하지 않습니다. 하지만 실행 파일 내에 라이브러리 코드가 저장되기 때문에 프로그램 크기가 커지고 메모리 효율이 좋지 않습니다. 여기서 메모리 효율이 좋지 않다는 것은 각각의 프로세스에서 라이브러리가 할당..