본문 바로가기
반응형

전체 글308

[프로그래머스/C++] 도넛과 막대 그래프 (2024 KAKAO WINTER INTERNSHIP) HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [문제 풀이] 이 문제는 그래프의 모양을 파악하는 문제다. 자세히 보면 막대그래프는 순환하지 않고, 8자 그래프는 나가는 간선이 2개가 있는 특이점을 발견할 수 있다. 이를 활용하면 그래프의 모양이 어떤 모양인지 쉽게 파악할 수 있다. 그래프를 돌면서 만약 간선이 2개인 점이 나오면 그 그래프는 8자 그래프, 나가는 간선이 없으면 막대 그래프, 만약 다시 시작했던 노드로 돌아오면 도넛 그래프다. 생점의 특이사항은 들어오는 간선이 하나도 없다는게 특징이다. 문제는 막대그래프의 끝점에서도 이러한 특징이 나타날 수 있는데, 제한사항에 보면 적어도 두개의 그래프를 생점에서는 생성하므로, 나가는 간선의 길이가 2보다 크거나 같으면서 들.. 2024. 1. 16.
[프로그래머스/C++] 카드 짝 맞추기 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [문제 풀이] 이 문제는 카드 짝을 맞추는 최소 횟수를 구하면 되는 문제다. 그렇기 때문에 이동횟수가 최소가 되는 경우를 구하기 위해서는 BFS로 a에서 목적지까지 가는데 걸리는 입력 횟수가 최소가 되도록 계산하면 된다. 그리고 카드를 뒤집는 순서도 게임에 중요하다 예를 들면 a카드를 뒤집고 b카드를 뒤집는 경우와 b카드를 뒤집고 a카드를 뒤집는 경우가 최소 횟수가 다를 수 있다는 의미다. 그래서 카드의 순서에 대한 모든 경우를 구해 카드를 뒤집는 순서를 구하고, 그 순서에 따라 BFS로 최소 횟수를 구했다. 이후 모든 경우에 대해 입력이 최소가 되는 횟수를 return하면 된다. [아이디어 정리] 카드를 뒤집는 순서에 대한 .. 2024. 1. 16.
[프로그래머스/C++] 표현 가능한 이진트리 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [풀이] 이 문제는 이진트리로 특정 수를 표현이 가능한지 풀면 되는 문제다. 이진트리로 특정 수를 표현하기 위해서는 자식 노드가 1일 때, 부모의 노드가 0이 되면 안되기만 하면 된다. 문제는 특정 자식 노드의 부모노드가 0인지 확인을 하기 위해서 어떤 노드가 부모노드 인지를 잘 알아야한다. DFS로 이진트리가 잘 연결되어 있는지 구해도 되지만 처음에 보자마자 부모노드만 잘 정해준다면 제한 된 범위에서 만들어지는 이진트리의 깊이가 깊지 않아 빠르게 구할 수 있다고 생각했다. 문제는 부모노드를 구하는 방법인데 맨 아래 1층과 그 부모인 2층을 비교하면 왼쪽 자식 노드(1층) = 부모노드 - (2층/2) 오른쪽 자식 노드(1층) .. 2024. 1. 15.
[프로그래머스/C++] [1차] 추석 트래픽 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [문제 풀이] 정렬을 한 뒤, deque를 써서 문제를 풀었다. 특정 시간에 최대 몇개가 포함되어 있는지 풀면 되는 문제기 때문에 먼저 시작 시간을 기준으로 정렬을 했다. 이후 시작시간을 기준으로 정렬을 했기 때문에 끝나는 시간이 deque의 맨 앞에 저장 된 시작 시간 보다 더 크다면 마찬가지로 같은 시간에 처리가 되고 있다는 뜻이다. 이후 끝나는 시간이 가장 빠른 처리가 맨 앞으로 와야 하므로 deque의 원소와 비교해 처리가 끝나는 시간을 비교하고 올바른 위치에 삽입했다. 위치를 바꿔서 삽입해도 되는 이유는 항상 deqeu의 맨 앞에 끝나는 시간이 가장 빠른 트래픽이 오도록 정렬해 두었기 때문에 가능한 것이다. ​ [아이.. 2024. 1. 14.
[프로그래머스/C++] 올바른 괄호의 갯수 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [풀이] 처음에는 memoization을 이용해 풀려고 했는데 n의 개수가 적어서 단순 재귀로 풀었다. 열린 괄호를 넣는 경우와 닫는 괄호를 넣는 경우로 나눌 수 있는데, 만약 열린 괄호를 넣게 된다면 사용할 수 있는 열린 괄호의 개수를 1만큼 줄이고 닫힌 괄호의 사용횟수를 1 늘리면 된다. 이후 두 경우의 합을 더하면 현재 열린 괄호와 닫힌 괄호를 사용할 수 있을 때 몇개의 경우의 수가 나오는지 결과를 알 수 있다. ​ [아이디어 정리] 열린 괄호의 개수가 0보다 크면 열린 괄호를 사용하고, 닫힌 괄호의 사용횟수를 1 늘린다. 만약 닫힌 괄호의 개수가 0보다 크면 닫힌 괄호를 사용하고 닫힌 괄호의 사용횟수를 1 줄인다. 위 .. 2024. 1. 13.
[프로그래머스/C++] 쿠키 구입 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [풀이] 쿠키의 길이가 최대 2000이기 때문에 시작점과 끝 점을 고르면 이분탐색으로 절반으로 나눌 수 있는지 쉽게 구할 수 있다고 생각했다. 그리고 계속 반복해서 시작점과 끝점을 더하는 계산이 나오지 않도록 부분합을 이용해 반복 덧셈을 줄였다. 쿠키의 시작점과 끝점이 주어지면 먼저 쿠키의 개수의 총합이 홀수인지 짝수인지 확인한다. 홀수인 경우는 절반으로 나눌 수 없으므로 패스한다. 짝수일 경우는 이분탐색으로 쿠키를 절반으로 나눌 수 있는지 탐색하면 된다. ​ [아이디어 정리] 쿠키의 부분합을 구한다. (반복 덧셈을 줄이기 위해서) 시작점과 끝점을 기준으로 이분탐색을 해 쿠키를 절반으로 나눌 수 있는지 구한다. 쿠키를 절반으로.. 2024. 1. 12.
[프로그래머스/C++] 아이템 줍기 HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 [문제 풀이] ​ 이 문제는 겹친 사각형으로는 캐릭터가 이동할 수 없다는게 핵심이다. 그래서 겹친 사각형의 경로를 없애주고, 없앤 다음 만들어진 경로를 BFS로 탐색하면 쉽게 풀리는 문제다. BFS로 탐색하는 것은 쉽지만, 어떤 경로를 이동할 수 있는지를 구하는게 생각보다 어려웠다. 처음에는 사각형의 좌표를 기준으로 겹쳐있는지를 보고 겹친 부분을 조건에 따라 삭제하려고 했다. 하지만 코드가 생각보다 길어질 것 같아서, 잘 생각해보니 겹칠 경우는 조건을 잡을 필요없이 겹친 부분을 0으로 없애면 실제로 가능한 경로만 남게 된다는 사실을 알았다. 그래서 하나의 사각형에서 이동이 가능한 경로를 그리고, 그 사각형의 경로 위에 다른 사.. 2024. 1. 11.
[Computer Science] 데이터베이스 - SQL HTML 삽입 미리보기할 수 없는 소스 SQL은 크게 DML, DDL, DCL로 분류 할 수 있다. ​ ​ 데이터 정의어(DDL: Data Definition Language): 데이터 구조를 생성하거나 삭제, 수정하는 등 데이터의 전체 골격을 결정하는 역할을 하는 언어 (트랜젝션이 발생하는 SQL이 DML이다.) ex) SELECT, INSERT, UPDATE, DELETE ​ 데이터 조작 처리어(DML: Data Manipulation Language): 데이터베이스 사용자가 질의 언어(QL)로 저장한 데이터를 실질적으로 처리할 때에 사용하는 언어. 정의된 데이터베이스에 입력된 데이터를 검색, 삽입, 갱신, 삭제하는 데 사용한다. ex) CREATE, DROP, ALTER ​ 데이터 접근 제어어(DC.. 2024. 1. 10.
[프로그래머스/C++] 섬 연결하기 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] ​ 섬과 섬을 연결하는 다리를 건설해 모든 섬을 이을 때, 최소 비용을 구하는 문제다. 이전에 풀었던 최소 신장 트리 문제와 똑같은 문제다. [SWEA/Python] 5249 - 최소 신장 트리 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] 노드와 간선의 수가 주어지면 이 그래프로 부터 최소 신장트리를 만들고 최소신장트리를 구성하는 간선의 가중치를 모두 더하는 문제다. HTML 삽입 codingjj.tistory.com HTML 삽입 미리보기할 수 없는 소스 [풀이 요약] 섬위 범위가 100이기 때문에, 프림 알고리즘이나 크루스칼 알고리즘에서 사용하는 유니온, 우선순위 큐 등을 사용하지 않고 반복으로도 쉽게 풀릴 것이라 생각했다. [아이디어 정.. 2024. 1. 9.
[Computer Science] 프로토콜 - OSI 7계층(1) [1, 2계층] HTML 삽입 미리보기할 수 없는 소스 프로토콜이란? 프로토콜은 통신 시스템이 데이터를 교환하기 위해 사용하는 [통신 규칙] OSI 7계층 모델에서는 각 계층에서 수행되는 프로토콜이 서로 독립적이라고 간주 계층 1에는 계층 1끼리 통신할 수 있는 프로토콜이 존재, ​ 데이터 단위 네트워크 프로토콜을 사용해 데이터를 교환할 때는 먼저 데이터를 특정 형태로 규격화 하는 작업이 필요, 데이터를 프로토콜에 맞춰 묶어준다. ​ OSI 7계층 모델의 각 계층에서 규격화된 데이터는 고유 명칭이 있으며, 계층에 상관없이 사용할 때는 통칭하여 PDU라고 부른다. HTML 삽입 미리보기할 수 없는 소스 계층 모델 특징이 다른 여러 호스트를 서로 연결해 통신하려면 연결 방식을 표준화해야 한다. 국제 표준화 단체인 ISO(I.. 2024. 1. 8.
[PostgreSQL] PostgreSQL 다운 및 설치하기 HTML 삽입 미리보기할 수 없는 소스 1. PostgreSQL은 오픈 소스로 개발된 관계형 데이터베이스(RDBMS)이다. 2. Oracle과 90% 이상의 스키마 호환성을 제공한다. 3. ANSI 표준 SQL에 매우 근접한 구조를 가지고 있다. ​ ​ https://www.postgresql.org/download/ PostgreSQL: Downloads www.postgresql.org 1. 해당하는 환경을 선택한다. 2. 원하는 버전을 다운 받는다. ​ 2024. 1. 8.
[프로그래머스/C++] 단속카메라 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] ​ 특정 구간을 지나는 모든 차량이 단속용 카메라를 만다록 하는 문제다. 이전에 풀었던, 요격 시스템이라는 문제와 매우 비슷하다. [프로그래머스/Python] 요격 시스템 HTML 삽입 미리보기할 수 없는 소스 [문제 설명] ​ A나라가 B나라를 침공했다. 요격 시스템이 있지만 비용이 있어서 요격 횟수를 최소로 해야하기 때문에 미사일의 요격을 최소로 하는 횟수를 구 codingjj.tistory.com HTML 삽입 미리보기할 수 없는 소스 이 문제는 greedy 하게 풀 수 있다. 특정 구간을 지나서 무조건 새로 카메라를 달아야 하는 구간이 오면 새로 비교하던 데이터들을 갱신하고, 다시 카메라가 차량들을 단속할 수 있는지 판단하면 된다. 이전에는 시.. 2024. 1. 8.
[UnReal] 언리얼 엔진 설치 하기 HTML 삽입 미리보기할 수 없는 소스 언리얼 엔진은 게임 개발사였던 에픽게임즈에서 만든 게임엔진으로, 게임 개발 환경을 제공하는 통합형 게임 엔진이다. 언리얼 엔진에서 주로 사용하는 언어는 C++이지만 C# 등의 언어도 지원한다고 한다. ​ 그럼 바로 설치를 해보자 HTML 삽입 미리보기할 수 없는 소스 1. https://www.unrealengine.com/ko/ 사이트에 들어가 로그인을 한다. (만약 가입을 안했으면, 가입을 한다) ​ ​ 2. 로그인 후 오른쪽 상단의 다운로드 버튼을 누른다. ​​ 3. 다운로드 버튼을 누르면 Epic Games Launcher가 설치되는데 이후 런쳐를 설치하고, 실행하면 다음과 같은 로그인 화면이 뜬다. ​ 4. 이후 가입한 아이디로 로그인을 하면 다음과 같은 .. 2024. 1. 7.
[프로그래머스/C++] 네트워크 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] ​ 컴퓨터와 컴퓨터가 연결되어 있으면 하나의 네트워크로 본다. 만약 A와 B컴퓨터 B와 C컴퓨터가 연결되어있다면, 하나의 네트워크로 간주한다. 컴퓨터간의 연결이 2차원 vector로 주어지면 컴퓨터들 간의 총 네트워크의 수는 얼마인지 return 하면 되는 문제다. HTML 삽입 미리보기할 수 없는 소스 컴퓨터의 개수가 최대 200개로 크지 않았기 때문에 DFS로 쉽게 풀 수 있다는 생각이 들었다. 그래서 이미 네트워크로 체크했는지 검사하는 isNet이라는 1차원 vector를 이용해 DFS로 문제를 풀었다. 하나의 컴퓨터와 연결된 컴퓨터는 이미 연결된 네트워크인지 체크를 했다고 처리를 하는 것이다. ​ [아이디어 정리] 컴퓨터의 개수만큼 for문을 .. 2024. 1. 7.
[프로그래머스/C++] 자동완성 HTML 삽입 미리보기할 수 없는 소스 [문제 요약] ​ 자동완성 기능을 넣기 위해서 한번이라도 입력된 단어는 자동으로 출력되도록 기능을 구현하기로 했다. 이 때, 앞부분이 같은 단어라면 구분을 위해서 구분이 될 때 까지 단어를 입력해야한다. 만약 goat와 gone이 있다면 구분을 위해 goa와 gon을 입력해 주어야 한다. 그래서 입력해야 할 문자의 수는 6이다. ​ HTML 삽입 미리보기할 수 없는 소스 [풀이] 처음에 보고 trie 알고리즘을 활용하면 쉽게 풀 수 있을 것 같아서 trie 알고리즘을 활용해 풀었다. 그런데 풀고나서 다른 사람들의 풀이를 보니 정렬을 활용해 푼 사람들이 많았다. 게다가 테스트 케이스에서는 더 빨랐다... ㅠㅠ 정렬을 활용한 풀이는 앞이나 뒤에 오는 단어와 비교해서 몇.. 2024. 1. 7.
반응형