분류 전체보기 481

[백준 10164] 격자상의 경로

https://www.acmicpc.net/problem/10164 10164번: 격자상의 경로 입력의 첫째 줄에는 격자의 행의 수와 열의 수를 나타내는 두 정수 N과 M(1 ≤ N, M ≤ 15), 그리고 ○로 표시된 칸의 번호를 나타내는 정수 K(K=0 또는 1 < K < N×M)가 차례로 주어지며, 각 값은 공백으 www.acmicpc.net 접근 만약 O 표시가 없을 때는 특정 위치 (i, j) 까지 이동할 수 있는 경우의 수를 구하기 위해서는 해당 위치의 위쪽과 왼쪽의 경우의 수를 더하면 된다. 왜냐하면 오른쪽과 아래로만 이동할 수 있고 두 방향의 경우의 수를 더하면 해당 위치까지 이동할 수 있는 경우의 수가 나온다. 이때 O표시가 있을 때는 (1, 1)위치부터 O 표시가 있는 위치까지의 경우의..

[TIL] 컴파일러와 인터프리터

번역기 컴파일러와 인터프리터는 고급 언어로 작성된 프로그램을 실행이 가능한 프로그램으로 번역하는 번역기이다. 즉 고급 언어로 작성된 프로그램이 CPU, 메모리 상에서 실행되기 위해서는 컴퓨터가 알 수 있는 언어로 번역하는 과정이 필요한데 이때 사용할 수 있는 것이 컴파일러와 인터프리터이다. 어떻게 번역하는지에 따라 컴파일러와 인터프리터를 구분한다. 컴파일러 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역하고 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성한다. 번역하는 과정을 거쳐야하기 때문에 시간이 오래 걸리지만 한 번 번역하면 다시 번역하지 않아도되기 때문에 실행 속도가 빠르다. 대표적으로 C, JAVA는 컴파일러를 사용한다. 인터프리터 인터프리터는 고급 언어로 작..

Today I Learned 2021.11.23

[운영체제] 멀티 스레드와 멀티 프로세스

멀티 스레드 멀티 스레드란? 싱글 스레드는 하나의 프로세스에서 하나의 작업만이 가능했다. 하지만 멀티 스레드는 하나의 프로세스에 여러 개의 스레드가 존재하고 각각 여러 개의 일을 수행하도록 한다. 멀티 스레드를 사용하는 이유 각각의 프로세스는 별도의 메모리를 갖고 있으며 프로세스끼리 통신을 할 때는 IPC를 통해 할 수 있다. 하지만 스레드는 코드, 데이터, 힙 영역을 공유하며 고유의 스택 영역을 갖고 있고 힙 영역을 통해 스레드끼리 통신을 할 수 있어 비교적 간단하다. 또한 CPU를 점유하고 있는 프로세스를 교체하는 작업인 문맥 교환이 일어날 때 현재 실행 중인 프로세스를 PCB에 저장하고 다음 차례인 프로세스의 정보를 가져와 실행시키는 작업이 많이 일어나게 되면 자원의 소모가 늘어나고 처리량이 저하된..

CS/운영체제 2021.11.22

[백준 2533] 사회망 서비스(SNS)

https://www.acmicpc.net/problem/2533 2533번: 사회망 서비스(SNS) 첫 번째 줄에는 친구 관계 트리의 정점 개수 N이 주어진다. 단, 2 ≤ N ≤ 1,000,000이며, 각 정점은 1부터 N까지 일련번호로 표현된다. 두 번째 줄부터 N-1개의 줄에는 각 줄마다 친구 관계 트리의 에 www.acmicpc.net 접근 위의 그림은 문제에서 예시로 주어진 트리이다. 정점 n을 루트로 갖는 서브트리의 경우 n이 얼리어답터일 때 n의 자식 노드는 얼리어답터일 수도 있고 아닐 수도 있다. 반면 n이 얼리어답터가 아닐 때는 자식 노드들은 모두 얼리어답터이어야 한다. 따라서 dp라는 2차원 리스트를 생성하고 dp[n][0]일 때는 n이 얼리어답터일 때의 최소 정점 수를, dp[n][..

[React] JSX

React의 공식문서를 통해 JSX를 공부하고 정리해보자. 그동안 프로젝트를 하면서 자연스럽게 JSX를 사용하고 있었는데 정확한 개념과 사용방법 등을 정리해보려고 한다. JSX란? 아래의 문법은 JSX를 통해 하나의 element를 생성한 것이다. const element = Hello, world!; JSX는 Javascript를 확장한 문법이다. 이는 브라우저에 실행되기 전에 코드가 Webpack으로 번들링되는 과정에서 Babel을 통해 일반 Javascript 형태의 코드로 변환된다. JSX를 통해 마크업과 로직을 분리하는 대신 두 개의 개념을 포함한 "컴포넌트"를 통해 관심사 분리를 할 수 있다. JSX 문법 부모 요소로 감싸기 컴포넌트에 여러 element를 반환한다면 반드시 하나의 부모 요소로..

React 2021.11.16

[자바스크립트 개발자가 알아야 할 33가지] #2 원시 자료형

자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 나눌 수 있다. 여기서 숫자, 문자열, 불리언, null, undefined, Symbol은 원시 타입이다. 이번에는 이러한 원시 타입의 특징을 자세히 알아보려고 한다. 원시 타입과 객체 타입의 차이점 원시 타입과 객체 타입의 차이점은 크게 세 가지가 존재한다. 원시 타입의 값은 변경 불가능한 값이고 객체 타입의 값은 변경 가능한 값이다. 변수에 원시 타입의 값을 할당하면 실제 값이 저장되고 객체 타입의 값을 할당하면 참조 값이 저장된다. 원시 타입의 값은 값에 의한 전달, 객체 타입의 값은 참조에 의한 전달이 된다. 여기서 변경 불가능한 값, 실제 값이 저장, 값에 의한 전달은 원시 타입의 특징이라고 할 수 있다. 이 3가지 특징이 무엇을 의..

[자료구조] 전위 순회와 후위 순회를 알 때의 트리

전위 순회와 후위 순회의 결과가 주어질 때 트리를 구하고, 이 트리를 통해 중위 순회도 구현할 수 있다. 원리 위와 같은 트리가 주어졌을 때 전위 순회와 후위 순회의 결과는 다음과 같다. 전위 순회 : 1 2 4 8 9 5 10 11 3 6 7 후위 순회 : 8 9 4 10 11 5 2 6 7 3 1 이때 전위 순회의 첫 번째 숫자와 후위 순회의 마지막 숫자가 루트 노드라는 것을 알 수 있다. (전위 순회는 루트 노드를 먼저, 후위 순회는 루트 노드를 마지막으로 방문하기 때문이다.) 그 다음 전위 순회의 두 번째 숫자는 루트 노드의 왼쪽 자식 노드가 될 것이고, 후위 순회에서 마지막에서 두 번째 노드는 루트 노드의 오른쪽 자식 노드가 될 것이다. 이때 두 번째 숫자인 2를 후위 순회에서 찾아보면 8부터 ..

CS/자료구조 2021.11.11

[자바스크립트 개발자가 알아야 할 33가지] #1 실행 컨텍스트

https://github.com/yjs03057/33-js-concepts#1-%ED%98%B8%EC%B6%9C-%EC%8A%A4%ED%83%9D GitHub - yjs03057/33-js-concepts: 모든 자바스크립트 개발자가 알아야 하는 33가지 개념 모든 자바스크립트 개발자가 알아야 하는 33가지 개념. Contribute to yjs03057/33-js-concepts development by creating an account on GitHub. github.com 위의 링크를 참고하여 자바스크립트 개발자가 알아야 할 33가지를 공부해보자. 특히 첫 번째는 콜 스택에 대한 내용인데 더 큰 개념으로 실행 콘텍스트를 이해하는 것이 중요하다고 생각하여 실행 콘텍스트에 대한 내용을 정리하고 콜..

[백준 2665] 미로 만들기

https://www.acmicpc.net/problem/2665 2665번: 미로만들기 첫 줄에는 한 줄에 들어가는 방의 수 n(1 ≤ n ≤ 50)이 주어지고, 다음 n개의 줄의 각 줄마다 0과 1이 이루어진 길이가 n인 수열이 주어진다. 0은 검은 방, 1은 흰 방을 나타낸다. www.acmicpc.net 접근 다익스트라의 주요 개념을 이해하는데 도움이 되었다. (1, 1)에서 출발하여 (N, N)에 도착할 때의 비용을 구해야한다. 벽을 부시는 것을 비용이라고 한다. 기본적으로 현재의 위치를 기준으로 상하좌우를 탐색한다. 이어서 벽일 때는 현재의 비용에서 +1, 벽이 아닐 때는 현재의 비용을 그대로 힙에 추가한다. 그렇다면 힙은 비용을 기준으로 다음 탐색할 위치가 나오게된다. 여기서 이미 벽을 부시..

[Level 1] 예산

https://programmers.co.kr/learn/courses/30/lessons/12982?language=python3 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 접근 예산 내에서 최대한 많은 부서의 물품을 지원해주어야 한다. 이를 위해 그리디로 접근을 하였다. 먼저 신청금액을 오름차순으로 정렬하고 신청금액이 작은 순서부터 탐색하여 예산에서 빼준다. 빼준 값이 0이상일 때 최종해를 증가시켰다. 구현 - 먼저 부서들이 신청한 금액이 들어있는 d를 오름차순으로 정렬한다. - 이제 d의 원소를 하나씩..

728x90
반응형