분류 전체보기(196)
-
정렬 - 좌표 압축
문제 (백준 18870) 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 5 2 4 -10 4 -9 예제 출력 1 2 3 0 3 1 예제 입력 2 6 1000 999 ..
2024.02.18 -
일반 수학 - 진법 변환2
문제 (백준 11005) 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다. 출력 첫째 줄에 10진법 수 N을 B진법으로 출력한다. 예제 입력 1 60466175 36 예제 출력 1 ZZZZZ toString(N)은 10진수를 N진수로 변경하고, parseInt(N)은 N진수를 10진수로 변경한다. 따라서 해당 문제를 해결하기 위해 N을 parseInt를 통해 10진수로 변경하..
2024.02.17 -
클로저 원리
const x = 1; function outer() { const x = 10; const inner = function () { console.log(x); }; return inner; } const innerFunc = outer(); innerFunc(); 맨 처음 전역 실행 컨텍스트가 콜스택에 푸쉬되고, outer함수가 호출되면서 outer함수 실행 컨텍스트 역시 콜스택에 푸쉬된다. 그리고 outer함수는 inner함수를 리턴하기 때문에 innerFunc는 inner함수를 가리키게된다. inner함수를 리턴한 후에 outer함수는 콜스택에서 팝되어 사라지게된다. 그리고 innerFunc를 실행시켰을 때 어떤값이 찍히게 될까? 결과는 outer함수에 정의된 x값 10이 로그에 찍히게 된다. 이미..
2024.02.16 -
DFS - 부분집합 구하기
자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요. ▣ 입력설명 첫 번째 줄에 자연수 N(1
2024.02.15 -
재귀 기초
재귀라는 용어는 익숙하지만 직접 구현하려고 하면 매우 골치가 아팠다. 정답 코드를 보며 스택 프레임을 직접 그려보아도 다시 코드를 구현하려면 머릿속이 백지가 되었다. 재귀가 어려운 이유를 두 가지로 좁히면 다음과 같다. 1. 어디를 재귀호출해야되는지 모르겠다. 2. 종료조건이 어떻게 되어야하는지 모르겠다. 다른말로 바꾸면 위의 두가지를 명확하게 정의해야 재귀적 접근이 가능하다는 것이다. 선언적 프로그래밍 재귀 알고리즘은 선언형 프로그램의 방식을 따라야한다. 선언형 프로그래밍이란 목표를 명시하고 알고리즘을 명시하지 않는 것이다. 여기서 목표는 종료조건과 문제의 정의이다. 이 목표만 명시하면 나머지 연산은 컴퓨터가 알아서 해준다. 쉬운 것부터 접근해보자. 십진수가 주어지면 이진수로 출력하는 코드를 재귀 알고..
2024.02.15 -
그리디 - 잃어버린 괄호
문제 (백준 1541) 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다. 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다. 출력 첫째 줄에 정답을 출력한다. 예제 입력 1 55-50+40 예제 출력 1 -35 예제 입력 2 10+20+30+..
2024.02.13