[BOJ12886] 돌 그룹
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명
문제 설명
이번 포스팅에서는 최소 스패닝 트리에 대해 다루고, 구현하는 방법에 대해 코드와 함께 설명하도록 한다.
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
C++에는 STL에 다음 순열을 탐색해주는 next_permutation 함수가 구현되어 있다.
문제설명 문제 자체는 간단하다. 자연수 N과 정수 K (1<=N<=4000000, 0<=K<=N)이 주어질 때, 이항 계수 NCK 를 1,000,000,007로 나눈 나머지를 출력하는 문제이다.
문제 설명 문제 링크 1~20까지의 원소가 들어갈 수 있는 집합에 명령어를 통해 원소를 추가하거나 삭제, 확인 등을 하는 문제이다.
비트 마스크란? 내부적으로 이진수를 사용하는 컴퓨터들은 이진법 관련 연산을 빠르게 수행할 수 있다.
주어진 배열에서 중복되지 않은 값이 주어질 때, 데이터 내에 특정 값이 존재하는지 여부를 찾는 방법 중 이진 탐색 방법을 많이 사용한다.
문제 링크(로그인이 필요합니다.)
문제 링크(로그인이 필요합니다.)
이번 포스팅에서는 최단 경로(Shortest Path)를 찾는 알고리즘들 가운데 하나인 다익스트라 알고리즘(Dijkstra’s Algorithm)에 대해 작성하려 한다.
이 글은 유니온 파인드에 대해 이미 알고있다는 전제하에 적은 글입니다.
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
문제 설명 문제 링크
문제 링크(로그인이 필요합니다.)
문제 링크(로그인이 필요합니다.)
문제 링크(로그인이 필요합니다.)
[BOJ10942] 팰린드롬 문제 링크 생각의 흐름 기본적인 팰린드롬의 아이디어에 대해 먼저 생각해보았다. 주어진 문자열의 시작점과 끝점에 대해 시작점은 오른쪽으로 한칸, 끝점은 왼쪽점으로 한칸 이동하며 둘의 문자가 같은지에 대한 여부를 확인하며 진행하면 된다. ...
문제 링크 2020 카카오 공채 코딩테스트 기출 문제이다. 코드 리뷰 재귀를 통한 분할 정복 하는 방법을 문제에서 모두 시뮬레이션 형태로 주어줬다. 순서에 맞게 재귀 코드를 작성하면 어렵지 않게 풀 수 있는 문제이다. 코드에 대한 부분 설명은 주석에 추가하겠...
[프로그래머스] 실패율 문제 링크 카카오 공채 코딩테스트 문제 문제 설명 스테이지의 개수와, 각 사용자가 현재 도착해있는 스테이지의 번호가 담긴 배열이 주어진다. 스테이지별로 실패율을 계산하여, 실패율이 높은 스테이지부터 낮은 스테이지 번호로 내림차순하여 출력...
[프로그래머스] 문자열 압축 문제 링크 2019 하반기 카카오 공채 문제였다. 그 당시 풀면서, 한가지 놓쳤던 부분이 있었다. 생각의 흐름 먼저 나는 완전탐색으로 문자열을 1개로 자를 때, 2개로 자를 때… 모든 경우로 탐색해주었다. 이때, 입력받은 문자열...
[BOJ5557] 1학년 문제 링크 문제 풀이 1. 생각의 흐름 일단 +,-를 N-2개만큼 사용하여 결과값을 마지막 숫자와 비교해야하기 때문에 모든 경우의 수를 생각해야한다. 하지만 모든 경우의 수를 다 보게 될 경우 당연하게도 시간 초과가 발생한다. 그러면 모든...
[BOJ17471] 게리맨더링 문제 링크 1. 생각의 흐름 주어진 구역을 2개의 선거구로 나누어 그 2개 선거구의 인구수를 최소로 만들어야 하는 문제. (선거구끼리는 모두 연결되어 있어야 함) 모든 경우의 수에 대해 먼저 생각을 해보았다. 즉 구역이 10개라 할 때, ...
[알고리즘설계] 재귀를 이용한 순열,조합 복습 겸 재귀를 이용하여 순열과 조합함수를 만들며 공부를 하였다. 1. 순열(permutation) 순열은 서로 다른 N개의 숫자 중 R개를 순서대로 나열하는 것 기호는 nPr 로직 순서를 고려하여야 한다. 1,3...
[BOJ1922] 네트워크 연결 문제 링크 문제 설명 컴퓨터들이 허브가 없어 1:1로 연결되어 있다. 모든 컴퓨터들은 연결되어 있다. a컴퓨터와 b컴퓨터가 연결되어 있을 때, 에지의 가중치가 주어진다. 모든 컴퓨터들을 연결하는데 필요한 최소 비용 출력하는 문제 ...
[BOJ9935] 문자열 폭발 문제 설명 문자열이 주어지고, 폭발 문자열이 주어진다. 문자열안에 폭발문자열이 있으면 폭발문자열 부분은 지워지고, 지워진 문자열 좌우가 다시 합쳐진다. 합쳐진 후 다시 폭발문자열이 존재하면 같은 상황이 반복된다. 모든 폭발문자열이 지워졌...
[BOJ2869] 달팽이는 올라가고 싶다 문제 링크 분류는 이분탐색인데, 수학적 접근으로 할 수 있어서 식을 찾아 해결하였다. #include <iostream> using namespace std; int main() { int a, b, v; cin...
[프로그래머스] 가운데 글자 가져오기 문제 링크 - 로그인이 필요합니다. 문제 설명 string 문자열 s를 받아와서 가운데 글자를 반환하는 함수를 구현하는 문제. 짝수일 땐 가운데 두글자를 반화하면 된다. 코드 리뷰 쉬운 문제인데 다른 사람 코드를 보다가 대...
[알고스팟] PI-원주율 외우기 문제 링크 문제 설명 숫자 문자열이 최대 길이 10000까지 주어진다. 한번에 선택할 수 있는 문자의 개수는 3,4,5개 이다. 선택한 문자가 반복이 어떻게 되느냐에 따라 난이도가 주어진다. 문자열길이까지 문자 선택을 반복해나갈때...
[알고스팟] TRIANGLEPATH-삼각형 위의 최대경로 문제 링크 문제 설명 정사각형(N*N) 배열 중 각 N개의 줄에 대해 1~N개의 숫자로 가로줄의 왼쪽부터 수를 채워나간다. 즉 첫 줄은 1개, 2번째 줄은 2개, 3번째 줄은 3개 … 로 삼각형 모양으로 배열을 ...
[BOJ6236] 용돈 관리 & 파라메트릭 서치 파라메트릭 서치란? 1. 이진탐색(Binary Search) 이진 탐색은 정렬된 일련의 값들이 주어졌을 때 그 값들 중에서 원하는 값을 찾는 알고리즘. 이진 탐색은 처음에 중간값을 선택하여 그 값과 찾으려는 값을 ...
[BOJ13458] 시험 감독 문제 링크 문제 설명 시험장 개수가 주어지고, 각 시험장마다 시험을 보는 학생 수가 주어진다. 그 후 총 감독관이 감독할 수 있는 학생 수와 부 감독관이 감독할 수 있는 학생 수가 주어진다. 이 때, 총 감독관은 시험장 하나 당 꼭 한...
[BOJ3190] 뱀 문제 링크 문제 설명 뱀은 맨좌측 맨위에 처음 위치하고 길이는 1에서 시작. 처음에 오른쪽부터 향한다. 뱀은 매 초마다 이동하는 데 다음과 같은 규칙을 따른다. 뱀의 몸길이를 늘려 머리를 다음 칸에 위치시킨다. 이동한...
[BOJ12100] 2048 easy 문제 링크 문제 설명 문제에 대한 설명이 조금 복잡해서 직접 읽어보는걸 추천한다. 한쪽 방향으로 블록을 보내면, 같은 값을 가진 블록들은 합쳐진다. 단 그 방향을 실행할 때 이미 합쳐진 블록들은 합쳐지지 않는다. 다른 방향...
[BOJ15684] 사다리 조작 문제 링크 문제 설명 2018 삼성 상반기 기출문제. 코드 리뷰 세시간 오바… 처음 접하는 문제유형 느낌이라 어떻게 풀지 고민하는데 시간을 많이 썼다. 결국 사다리를 1개, 2개, 3개를 선택하여 설치하는 조합의 ...
[BOJ1918] 후위 표기식 문제 링크 문제 설명 스택의 기본 응용문제라고 할 수 있는 후위표기식 문제이다. 후위 표기식은 계산기 프로그램의 기반이 된다고 할 수 있다. 일반적으로 주어지는 식(괄호 존재)에 대해 후위 표기식으로 바꾼 식을 출력하면 된다. 코드...
[BOJ1991] 트리 순회 문제 링크 문제 설명 트리의 노드들을 입력 받고 전위, 중위, 후위 순회를 한 결과를 출력하는 문제이다. 노드의 개수를 처음에 입력 받고, 그 개수만큼 노드의 값, 그 노드의 왼쪽 노드 값, 오른쪽 노드 값을 입력받는다. 만약 왼쪽이나 ...
[BOJ10866] 덱 문제 링크 문제 설명 덱(Deque)를 구현하는 문제이다. push_back, push_front, pop_back, pop_front , size, empty, front, back을 구현하면 된다. 코드 리뷰 연결리스트와 포인터를 이용하...
[알고스팟] JUMPGAME-외발 뛰기 문제 링크 문제 설명 0,0 배열에서 시작하여 그 칸에 적힌 숫자만큼 아래나 오른쪽으로 이동한다. n-1,n-1까지 이런식으로 도달할수 있는지 없는지에 대한 판단을 내리는 문제이다. 코드 리뷰 DP문제인데, 내가 푼 코드...
[BOJ17144] 미세먼지 안녕! 문제 링크 문제 설명 2019 상반기 DS 공채 및 네트워크사업부 인턴 코테문제였다. 단순 시뮬레이션 문제. 미세먼지가 보드판에 있고, 공기청정기가 놓여있는 칸이나 보드판 밖으로는 확산되지 않으며 네방향으로 퍼진다. 퍼지는 규칙은...
[BOJ1920] 수 찾기 문제 링크 문제 설명 정수의 집합 A를 입력받는다. 그 다음 줄부터 주어지는 정수들에 대해 그 정수가 집합 A에 속해있는지를 찾는 문제이다. 코드 리뷰 시간 제한이 2초이고, 집합 A는 100000개까지 입력받을 수 있고, 다음 줄부...
[알고스팟] FENCE-울타리 잘라내기 문제 링크 문제 설명 많이 등장하는 문제이다. 백준에선 히스토그램에서 가장 큰 직사각형이라는 문제로 존재한다. 막대기들을 쭉 세울 때, 막대기 안에 직사각형 모양의 넓이 중 가장 큰 직사각형의 넓이를 구하는 문제이다. 코드 ...
[BOJ17406] 배열돌리기4 문제 링크 문제 설명 배열을 입력받고, 범위 명령어를 통해 그 범위만큼의 배열을 오른쪽으로 회전시킨다. 범위 명령어는 최대 6번까지 입력받을 수 있다. 배열을 명령 횟수만큼 회전시킨후, 행별로 배열의 합중 최소를 출력하는 문제이다. ...
[SWEA1767] 프로세서 연결하기 문제 링크 - 로그인이 필요합니다. 문제 설명 멕시노스 판에 코어들이 주어진다. 코어가 있는 배열 값은 1, 없는 배열 값은 0. 멕시노스 판 가장자리는 전원이 흐르는 곳이다. 코어들을 가장자리까지 연결선을 통해 연결할 때, ...
[BOJ5427] 불 문제 링크 문제 설명 1초마다 불이 옮겨 붙는다. 상근이도 1초마다 한칸씩 움직일 수 있다. 이때 상근이가 무사히 보드판을 탈출하는데 걸리는 최소 시간을 구하는 문제이다. 보드판엔 벽, 빈공간, 불, 상근이의 시작위치가 주어지고, 불은 빈공간과 상...
[BOJ2573] 빙산 문제 링크 문제 설명 보드배열에 빙산이 있는 경우 자연수로, 빙산이 아닌 바다인 경우는 0으로 값이 주어진다. 자연수의 크기만큼 빙산의 높이가 된다. 빙산은 1년에 한 번 바다가 옆에 있을 때 녹는데, 4면중 바다의 개수만큼 빙산의 높이가 줄어든...
[BOJ1726] 로봇 문제 링크 문제 설명 보드판은 0과 1로 이루어져있다. 0은 로봇이 지나갈 수 있는 곳, 1은 로봇이 지나갈 수 없는 곳이다. 로봇은 동서남북 네방향 중 한 곳으로 방향을 가지고 있다. 로봇에게 내릴 수 있는 명령은 2가지가 있다. ...
[BOJ10845] 큐 문제 링크 문제설명 큐를 구현하는 문제이다. push,pop,size,front,back,empty 6개의 기능을 구현하면 된다. 코드리뷰 10828번 스택문제를 풀때처럼 역시 포인터, 동적할당을 이용하여 문제를 해결하였다. 점점 더 포인터...
[BOJ5639] 이진 검색 트리 문제 링크 문제설명 전위순회로 주어진 노드 키값을 통해, 후위순회로 노드 키값을 출력하는 문제이다. scanf에서 EOF 사용법이 필요한 문제였다. 코드리뷰 그동안 이진탐색트리를 공부한 부분에 대해 복습하기 위해 풀어본 문제로...
[BOJ10828] 스택 문제 링크 문제설명 따로 문제에 대해서 설명할 부분은 없다. 스택을 구현하는 문제이다. push, pop, size, empty, top을 구현하면 된다. 코드리뷰 포인터, 동적할당, 리스트등을 공부하는 요즘 예전에 풀었던 스택문제를 리스...
[BOJ2174] 로봇 시뮬레이션 문제 링크 문제설명 보드판에 입력받은 수 N만큼 로봇을 설치한다. 로봇은 각각 동서남북중 방향을 하나 가지고 있다. 보드판은 일반적인 배열과 다르게, 왼쪽 하단이 1,1이 된다. 로봇에 명령을 내릴 수 있는데 명령의 종류는 3가지...
[알고스팟] CLOCKSYNC-시계맞추기 문제 링크 문제설명 이 문제는 배열 한칸한칸에 시계가 있고 그 시계는 12,3,6,9시 중 한 곳을 가리키고 있다. 그리고, 스위치 10개가 주어지는데 각 스위치에는 움직일 수 있는 시계번호(배열번호)가 3~5개 들어있다. ...
[알고리즘 설계] 행렬 곱셉을 위한 스트라센 알고리즘 1. 기본적인 행렬의 곱 연산 행렬 A와 B가 n * n의 정사각 행렬일 경우, 두 행렬의 곱 C = A * B를 정의하면, cij = Σ(k=1~n) aik * bkj (cij 는 행렬 C의 원소). SQUARE-...
[알고스팟] BOARDCOVER-게임판 덮기 문제 링크 문제설명 보드판을 #과 .을 이용하여 표기한다. .인 부분을 ㄱ 자 모양의 블록을 이용하여 덮을 때, 덮을 수 있는 가지수를 구하는 문제이다. ㄱ자 모양의 블록은 자유롭게 회전할 수 있다. 하지만, 블록을...
[알고리즘 설계] 분할정복 1 이번 포스트에선 분할정복의 기본적인 설명과 분할정복기반의 대표 문제인 최대부분배열의 문제에 대해서 소개한다. 최대부분배열의 문제는 분할정복이 아닌 다이나믹 프로그래밍으로 풀면 더빠르게 풀 수 있지만, 분할정복을 통해 푸는 방법을 소개한다. ...
[BOJ10211] Maximum SubArray 문제 링크 문제설명 유명한 문제인 최대부분배열을 구하는 문제이다. 코드리뷰 이전 포스팅 분할정복1을 보면 자세히 설명을 써놓았다. 다이나믹 프로그래밍이 아닌 분할정복을 이용하여 푼 코드이다. #include...
[BOJ2234] 성곽 문제 링크 문제 설명 이 문제는 조금 특이하게 입력을 받는다. 배열판의 각 칸마다 숫자를 입력받는데, 서쪽에 벽이 있을 경우는 1을 더하고, 북쪽에 벽이 있을 경우는 2를 , 동쪽에 있을 땐 4, 남쪽에 벽이 있을 때는 8을 더하여 입력을 받는다. ...
[알고스팟] BOGGLE-보글게임 문제 링크 문제설명 보드판 한칸 한칸에 대문자 알파벳이 쓰여있다. 입력받은 영단어에 대해 보드판을 상하좌우,대각선으로 움직이면서 그 영단어를 나타낼 수 있는지 확인하는 문제이다. 코드리뷰 기본 알고리즘은 완전 탐색으로 해결한다...
[SWEA1231] 중위순회 문제 링크(로그인이 필요합니다.) 문제 설명 이진트리를 중위순회하여 노드에 들어있는 데이터값을 중위순회 순서대로 표기하는 문제이다. 문제자체에서 루트노드는 번호가 1, 그리고 완전이진트리만 취급한다고 조건을 걸어서 사실 배열로 풀면 굉장히 ...
[BOJ2579] 계단오르기 문제링크 문제설명 0에서 시작하여 계단을 오르는데 계단은 한번에 한 칸내지 두 칸을 오를 수 있다. 또한 연속된 계단 3개는 오를 수 없다.(첫 번째 계단, 두 번째 계단, 세 번째 계단으로는 오를 수 없음.) 마지막 계단에 도착을 무조건 ...
[BOJ11048] 이동하기 문제링크 문제설명 배열의 1,1에서 시작하여 N,M까지 이동할 때, 이동하며 지나온 배열값의 합 중 최대를 출력하는 문제이다. 현재 위치가 r,c라고 할때 (r+1,c), (r+1,c+1), (r,c+1)로 이동할 수 있다. 코드리뷰 ...
[알고리즘 설계] 이진 탐색 트리 이진 탐색 트리에 대한 기본 연산은 트리의 높이에 비례하는 시간에 수행. 완전 이진 탐색 트리의 기본 연산은 최악의 경우 O(logn) 에 실행. 트리가 n개의 노드가 선형으로 연결된 모양인 경우 평균 Θ(n) 시간에 수행된다. 기...
[SWEA1249] 보급로 SWEA 1249 문제링크(로그인이 필요합니다.) 문제설명 N*N 보드판에 숫자들이 적혀있다. (0,0)에서 출발하여, (N-1,N-1)까지 상하좌우로 이동하여 도착할 때, 밟는 숫자들의 합이 최소가 되게 하면 된다. 코드리뷰 BFS...
[SWEA7699] 수지의 수지 맞는 여행 SWEA 7699 문제링크(로그인이 필요합니다.) 문제설명 R*C 보드판에 알파벳이 쓰여있다. (0,0)에서 출발하여 보드판을 상하좌우로 움직일 때, 밟았던 알파벳 종류는 다시 안밟는다고 할 때, 지나갈 수 있는 알파벳의 최대...
[BOJ15483] 최소 편집 문제 링크 문제 설명 서로 다른 두 문자열을 같게 만드는데 드는 최소 연산 횟수를 구하는 문제이다. 문자를 삽입, 삭제, 교체 할 수 있다.(각각 연산 횟수 1) 알고리즘 설명 A 문자열의...
[BOJ1516] 게임개발 문제 링크 문제 설명 앞선 포스팅 BOJ1005 ACM Craft와 같은 유형의 문제다. 풀이 과정 일단 풀이과정은 ACM Craft와 동일하다. 하지만 ACM Craft를 풀면서 단순히 DAG에 대한 정점...
[BOJ1005] ACM Craft 문제 링크 문제 설명 건물을 지을 때, 연결된 앞 건물들이 모두 지어지고나서 지을 수 있다. 건물 w의 번호를 입력했을 때, w가 지어지는데 걸리는 시간을 출력하는 문제이다. 풀이 과정 ...
[BOJ2150] 도미노 문제 링크 문제 설명 도미노에 비유한 방향 그래프가 주어지고, 만약 a->b 로 그래프가 만들어질 경우, a를 넘어뜨리면 b도 넘어지는 방식으로 방향그래프를 통해 도미노를 만든다고 가정. 하나의 노드(블록)을 쓰러...
[BOJ2150] Strongly Connected Component 문제 링크 문제 설명 문제 설명은 따로 없다. SCC를 찾아서 그 안에 있는 정점들을 정렬하여 출력하고 마지막에 -1을 붙혀주면 된다. SCC(강한연결성분)란? ...
[알고리즘설계] DFS를 이용한 위상정렬 코드 리뷰 접점과 간선의 정보를 통해 방향그래프를 만든다. 위상정렬을 하려면 방향그래프에 사이클이 없어야 한다. 한번도 방문하지 않은 정점은 white , 정점에 인접한 정점들을 모두 방...
[알고리즘설계] BFS를 이용한 위상정렬 코드 리뷰 접점과 간선의 정보를 통해 방향그래프를 만든다. 위상정렬을 하려면 방향그래프에 사이클이 없어야 한다. 또한 방향그래프에 사이클이 없으면 위상정렬을 할 수 있으므로, 둘은 동치관...
[BOJ1707] 이분 그래프 문제 링크 문제 설명 이분 그래프란 그래프의 정점의 집합을 둘로 분할하여, 각 집합에 속한 정점끼리는 서로 인접하지 않도록 분할할 수 있을 때의 그래프를 말한다. 쉽게 말해서, 인접한 정점끼리는 서로 다른 색으로 ...
[SWEA1861] 정사각형 방 SWEA 1861 정사각형 방 - 로그인이 필요합니다. 문제 설명 N*N 배열의 각 방은 1~N^2 의 번호가 붙어있다. 하나의 방에서 상하좌우 로 움직일 수 있다. 이동할 때는 현재 방번호보다...
[알고리즘 문제해결전략] 3.코딩과 디버깅에 관하여 - 2 1. 변수 범위의 이해 1. 산술 오버 플로우 수학적/논리적으로는 완전히 정당한 알고리즘도 프로그램으로 구현했을 때는 예상과 다르게 동작하는 경우가 있다. 흔한 원인이 산술 오버 플로우 ...
[알고리즘 문제해결전략] 3.코딩과 디버깅에 관하여 - 1 1. 코딩의 중요성 빨리 코드를 작성하는 것보다 읽기 쉬운 코드로 작성해라. 복잡하고 읽기 어려운 코드는 디버깅도 어렵고, 한번에 정확하게 작성하기 어려움. 간결하고 효율적인 프로그램을 작성하는 능력은 프로그래...
[알고리즘 설계] 가중치가 주어지는 Interval Graph (Weighted Independent Set) Binary Search Tree 간략한 설명 탐색할 때 사용, 리스트를 정렬한 후 이진 탐색을 하게 될때의 단점은 삽입, 삭제가 있다. ...
[알고리즘설계] Log 기본 로그관련 log(base a)xy = log(base a)x + log(base a)y log(base a)b = log(base c)b / log(base c)a log(base a)n^b = bl...
[알고리즘설계] Bin-Packing 설계 방향. Bin-Packing 문제는 대표적인 NP문제 이기 때문에, 휴리스틱을 사용하여 근접한 답을 내는 방법과, Bin-Packing 문제 자체에 조건을 추가하여 실제 답에 근사한 답으로 접근하는 방법 두가지에 대해 포스팅 하려...
[알고리즘설계] 정렬의 하계 - 1 하계란 어떤 알고리즘을 사용할 때, 최소 하계만큼의 시간이 걸린다는 것을 의미한다. “정렬의 하계” 란 정렬 알고리즘을 만드는데, 최소 “정렬의 하계” 만큼의 시간은 걸린다는 것. 참고로, 상계...
[알고리즘 설계] Interval Graph - 2 (Scheduling) 문제 Interval Graph - 1 에서 주어졌던 구간들을 이번에는 스터디룸 예약시간으로 생각해보자. 스터디룸의 예약 시작시간과 끝나는 시간을 구간의 시작점과 끝점으로 주어졌을 때, 이번에는...
[알고리즘설계] 퀵소트의 ‘평균’ 시간복잡도 개요 퀵소트의 시간복잡도는 O(nlogn)으로 알려져있지만, 최악의 경우 O(n^2)일 수있다. 그래서 퀵소트의 ‘평균’ 시간복잡도 를 구해보려 한다. 최악의 경우인 O(n^2)의 상황은 사실 극히 드물다. 피벗의 선택기준...
[알고리즘 설계] Interval Graph - 1 (Scheduling) 문제 영화배우가 ‘한편의 영화당 촬영의 시작과 끝’ 을 알고 있을 때, 촬영할 수 있는 영화의 최대 개수 를 구하는 문제이다. 구간이 겹치는 영화들은 선택할 수 없다....
[BOJ16234] 인구이동 문제링크 문제 설명 처음 필드 한칸 마다 국경선이 존재하고, 나라가 하나씩 존재한다. 필드 한칸에는 그 나라에 살고 있는 인구수가 적혀있다. 인구 이동이 시작되면 아래 그림과 같이 진행된다. (출처: 백준 온라인저지) 더 이...
[BOJ15683] 감시 문제 링크 문제 설명 CCTV는 종류가 5가지가 있고, 각각의 CCTV는 감시할 수 있는 방법이 다르다. 각각의 CCTV를 설치할 때는 회전을 90도로 하며 설치할 수 있다 (그림 출처 : 백준 온라인 저지). ...
[BOJ15685] 드래곤커브 문제 링크 문제 설명 드래곤 커브는 시작 점, 시작 방향, 세대의 세가지 속성 으로 이루어져있다. 다음 그림은 시작 점이 (0,0)이고 방향이 오른쪽인 0세대이고 길이가 1인 드래곤 커브이다(0세대 드래곤 커브는 길이가 1인 선분...
[BOJ14890] 경사로 문제 링크 문제 설명 땅의 높이가 적힌 보드판을 이동하는데, 높이가 높거나 낮은 경우 경사로를 설치하여 이동할 수 있다. 단 경사로는, 땅의 높이가 1만큼 차이나는 경우에만 놓을 수 있고, 입력으로 주어지는 L길이로 경사로를 놓을 수...
[BOJ14500] 테트로미노 문제 링크 문제 설명 그림과 같은 테트로미노들을 가중치가 있는 보드판에 놓는다. 테트로미노들은 방향전환, 대칭이동 이 가능하다. 가중치가 가장 최대가 되는 값 을 구하면 된다. 코드 리뷰 노가다로 풀다가 이건 ...
[SW5644] 무선 충전 문제 링크 - 로그인이 필요합니다. 문제 설명 자세한 설명은 링크를 참고하기 바랍니다. A와 B사람이 무선충전기계가 놓여져 있는 보드판을 걸어간다. 보드판에 무선충전기계를 놓는데, 좌표에 두고 그 충전기가 충전할 수 있는 범위만큼 충전...
[BOJ3049] 다각형의 대각선 문제 링크 코드 리뷰 점화식 찾는 연습하기 위한 정답률 50퍼센트 이상을 찾아보았다. 다각형이 주어질때, 그 다각형의 대각선을 그리고, 대각선들끼리 교차하는 점의 개수를 찾는 문제였다. 점이 만들어지기 위해서는, 대각선 두개가 ...
[BOJ6549] 히스토그램에서 가장 큰 직사각형 문제 링크 문제 설명 이 문제는 히스토그램(막대그래프)가 길게 나열되어있고, 그 안에 있는 직사각형의 최대 넓이를 구하는 문제이다. (아래 그림 참고) 막대의 개수 n의 범위는 1~100,000 이고, 막대의 높...
리뷰 삼성 기출 문제라서 그런지 유형 자체가 딱 삼성 코테스러웠다. 풀고나서 다른 사람들 풀이보니깐 시간을 훨씬 줄일 수 있는 방법들이 많이 있었다. 아직까지 문제풀면서 그런 방법들을 쓰면서 푸는 능력이 많이 부족한 듯. 최적화까지는 고려하지않아도 되는 문제여서 단순 구현으로...
[BOJ1057] 토너먼트 BOJ 토너먼트 문제 링크 문제 설명 N명이 토너먼트 대결을 펼친다. 순서대로 번호가 주어지고, 다음 토너먼트에서도 앞에서부터 순서대로 번호가 주어진다. 김지민과 임한수가 참가한다고 할 때, 둘의 번호가 주어지고 몇 번째 토너먼트에서 만나...
[SWEA 5656] 벽돌깨기 SW 벽돌깨기 문제 (로그인이 필요합니다) 시작 전 유명한 문제라고 해서 풀어봤는데, 진짜 생소하고 어려웠다. 처음에 구슬이 어디를 부숴야 최소 값이 나올지, 그리고 부숴진 벽돌에 대한 정렬을 어떻게 구현해야 할지, 그리고 벽돌이 부숴지는...
[BOJ11559] Puyo Puyo BOJ PuyoPuyo 문제 링크 문제 설명 필드에 여러가지 색상의 뿌요를 놓는다. 같은 색 뿌요가 4개 이상 상하좌우로 연결되어 있으면 같은 색 뿌요들이 한번에 없어진다. 뿌요가 없어지고 나서 위에 다른 뿌요들이 있다면, 중력...
도메인이란 인터넷상에 존재하는 컴퓨터의 소속을 가리키는 것 . 이것을 사용하여 컴퓨터나 네트워크의 주소를 나타낸 것을 도메인 명 이라고 한다. 도메인 명은 IP 주소와 쌍을 이룬다. IP 주소는 숫자로 나열되어 있어 표기 자체에 의미를 갖고 있지 않으며 기억하기 어...
[OSI 참조모델과 TCP/IP 기초] IP 주소 인터넷과 같이 IP를 기반으로 하는 네트워크에서 한 대의 컴퓨터마다 할당되어 있는 식별번호로, 32비트 수치로 표현. 8비트씩 4개로 나눠서 각각을 10진수로 표기하여 기술. 네트워크 상의 주소 를 가리킨다. IP주...
[OSI 참조모델과 TCP/IP 기초] 노드 네트워크에 연결되어 있는 네트워크 기기나 네트워크의 연결포인트를 통틀어 노드 라고 한다. 네트워크 상에 존재하는 기기 는 모두 노드라고 기억하는 것이 좋다. 실제로 네트워크 상에서 패킷을 주고 받는 것은 컴퓨터에 국한되지 않...
[OSI 참조모델과 TCP/IP 기초] 패킷 컴퓨터 통신을 할 때 사용하는 작게 분할된 데이터 덩어리. 큰 데이터를 분할하지 않고 네트워크 상으로 흘려보내면, 그 데이터가 회선을 모두 점유해서 다른 기기가 통신을 할 수 없게 된다. 데이터를 패킷으로 분할하여 송수신하는...
[OSI 참조모델과 TCP/IP 기초] TCP/IP TCP/IP는 인터넷에서 표준으로 사용되고 있는 네트워크 프로토콜로, OSI 참조 모델의 3계층(네트워크 계층)의 IP를 중심으로 한 여러 프로토콜의 집합체를 총칭하여 부르는 것. 주로 제 4계층의(전송계층)의 TCP와 ...
[네트워크 개론] 네트워크를 구성하는 장치 네트워크는 물리적인 연결 방법부터 그 위를 흐르는 전기신호의 정의, 통신 내용의 송수신 방법 등 다양한 규칙이 정해져있다. 이러한 약속에 따라 기기를 구성함으로써 컴퓨터의 종류에 의존하지 않고 네트워크에서 정보를 주고받을 수 있다...
[OSI 참조모델과 TCP/IP 기초] UDP User Datagram Protocol OSI 참조 모델의 제 4계층인 전송 계층에 위치하는 네트워크 프로토콜 커네션리스형(데이터그램형) 통신을 지원한다. 커네션리스형이란 정보를 보낸다는 것을 상대편에게 통지하지 않고...
[OSI 참조모델과 TCP/IP 기초] OSI 참조모델 네트워크에서는 서로 다른 기기들 간에 데이터를 문제없이 송수신할 수 있도록 상호 운용성을 실천하는 것이 중요. 네트워크를 고도로 활용하기 위해 네트워크에 기능 확장 서비스를 추가하거나 새로운 테크놀로지를 도입할 필요도...
[네트워크 개론] 네트워크의 서비스 서비스란 서버가 네트워크에 제공하는 기능을 말한다. ‘서버’란 원래 서비스를 제공하는 측의 컴퓨터를 의미한다. 파일 공유와 같은 서비스를 네트워크에 대해 제공하고 있는 것은 모두 서버로서 작동하고 있다는 것. 이러한 서비스에는 각...
[네트워크 개론] LAN과 WAN 네트워크란 정보가 흘러가는 경로 컴퓨터의 경우는 네트워크에 흐르는 정보가 파일 등과 같은 전자 데이터로 되어있는 특수한 경우 LAN LAN이란 로컬 영역 네트워크 사무실이나 빌딩안과 같은 비교적 좁은 범위의 네트워크 LA...
[네트워크 개론] 인터넷 기술 인터넷은 LAN끼리 연결함으로써 세계 구모로 확장시킨 네트워크 처음엔 학술연구 목적으로 이용되던 네트워크였지만, 일반 사용자용 연결 서비스가 나오며 폭발적으로 보급되어 상용목적으로 널리 성행하게 됨. 인터넷은 TCP/IP 네트워크 프로토콜...
[네트워크 개론] 클라이언트와 서버 클라이언트는 네트워크에서 서비스를 요구하는 측의 컴퓨터를 말한다. 서버는 네트워크에서 서비스를 제공하는 측의 컴퓨터를 말한다. 클라이언트와 서버가 정보를 주고받음으로써 네트워크에서 정보가 오고가게 된다. 소규모 LAN의 경우, 서...
[네트워크 프로그래밍] HTTP 메소드 HTTP 서버와의 통신은 요청-응답 패턴을 따른다. 하나의 무상태(stateless) 요청과 뒤이어 오는 하나의 무상태 응답으로 구성된다. HTTP 요청 HTTP 요청은 둘 또는 세 요소로 구성된다. 첫 번째...
[네트워크 프로그래밍] HTTP HTTP는 웹 클라이언트가 서버와 대화하는 방법과 서버에서 다시 클라이언트로 데이터가 전송되는 방법을 정의한 표준이다. 프로토콜 HTTP는 웹 브라우저와 웹 서버 사이에 통신을 위한 표준 프로토콜. HTTP는 클라이언트와 서버가 연...
[네트워크 프로그래밍] 스트림 - 출력스트림 개요 입출력(I/O)는 네트워크 프로그램의 가장 큰 비중을 차지한다. 하나의 시스템에서 다른 시스템으로 데이터를 이동하는 일. 자바에서 I/O는 스트림(stream)에 내장되어 있다. 입력 스트림은 데이터를 읽고, 출력 스...
[네트워크 프로그래밍] 클라이언트/서버 모델 클라이언트/서버 애플리케이션은 대부분의 프로그램 로직과 사용자 인터페이스가 서버에 비해 상대적으로 저렴한 개인용 컴퓨터에서 실행되는 클라이언트 소프트웨어에서 처리된다. 반면, 많은 양의 데이터는 일반적으로 비싼 고성능 서버나 클...
[네트워크 프로그래밍] TCP/IP 4계층 네트워크를 통한 전송은 데이터의 논리적인 특성뿐만 아니라 네트워크의 물리적 특성까지 고려하여 주의 깊게 다뤄야 하는 복잡한 작업. 애플리케이션 개발자나 소프트웨어 사용자들에게 이러한 복잡한 과정을 노출시키지 않기 위해, 네트워크 ...
[네트워크] 유니,브로드,멀티 캐스트 캐스트에서 유니캐스트, 브로드캐스트, 멀티캐스트로 나누는 구분은 네트워크에서 통신을 하는 방식에 따른 구분. 1. 유니캐스트 현재 네트워크 상에서 가장 많이 사용되는 트래픽. 브로드캐스트가 더 많이 사용되는 네트워크는 좋은 현...
[네트워크] OSI 7 Layer 통신에 관한 국제적인 표준기구 International Organization for Standardization(ISO)에서 만든 통신이 일어나는 과정을 7단계로 나눈 것. 통신을 7개의 단계별로 표준화하여 효율성을 높이기 위해서 사용된...
[자료구조] 최소 스패닝 트리 신장 트리(spanning tree)란 n개의 정점으로 이루어진 무방향 그래프 G에서 n개의 모든 정점과 n-1개의 간선으로 이루어진 트리 깊이 우선 신장 트리 : 깊이 우선 탐색을 이용하여 생성된 신장트리 너비 우선 신장 트리 : 너비...
[자료구조] 퀵소트 퀵소트란? 퀵소트 역시 머지소트처럼 분할 정복 방법 을 이용하여 구현된다. 퀵소트의 시간복잡도는 평균적으로 O(nlogn) 그리고 최악의 경우 O(n^2) 을 가진다. 퀵소트의 평균시간복잡도에 대한 증명은 https://sangwoo0727.git...
[자료구조] 머지소트 머지소트란? 합병 정렬은 분할 정복 알고리즘 디자인 기법에 근거하여 만들어진 정렬 방법이다. 분할 정복의 3단계 분할 : 해결이 용이한 단계까지 문제를 분할해 나간다. 정복 : 해결이 용이한 수준까지 분할된 문제를 해결...
[BOJ6236] 용돈 관리 & 파라메트릭 서치 파라메트릭 서치란? 1. 이진탐색(Binary Search) 이진 탐색은 정렬된 일련의 값들이 주어졌을 때 그 값들 중에서 원하는 값을 찾는 알고리즘. 이진 탐색은 처음에 중간값을 선택하여 그 값과 찾으려는 값을 ...
[자료구조] 힙 우선순위 큐 (Priority Queue) 큐의 핵심 연산인 큐에 데이터를 삽입하는 행위와 큐에서 데이터를 꺼내는 행위는 동일하다. 다른 점은 큐는 먼저 들어간 데이터가 먼저 나오지만(First in First out) 우선순위 큐는 들어간 순서에 상관없...
[자료구조] 연결리스트 기반 스택의 구현 연결리스트로 스택을 구현하였다. 포인터변수는 노드를 가리킬 수 있는 head 하나만 선언한다. 연결리스트와 똑같은데, 삽입의 역순으로 노드를 참조할 수 있게 구현하면 된다. #include <iostream> #...
[자료구조] 배열 기반 스택의 구현 연결리스트가 아닌 배열 기반으로 스택을 구현하였다. #include <iostream> #include <cstring> #define STACK_LEN 100 using namespace std; typedef...
[자료구조]더미노드를 활용한 정렬기능이 추가된 연결리스트 자료구조의 틀 새 노드를 추가할 시, 리스트의 head 부분으로 저장을 시작한다. 장점은 리스트의 마지막을 가리키는 포인터변수 tail이 필요 없다. 단점이라고 말하기는 ...
[자료구조기초] 자료구조의 개념 자료구조란 자료구조란 자료를 효율적으로 표현하고 저장하고 처리할 수 있도록 정리하는 것. 자료구조의 분류 자료구조는 크게 4가지로 분류할 수 있다. 단순 구조, 선형 구조, 비선형 구조, 파일 구조. 단...
[자료구조기초] 자료의 표현-1 개론 이번 포스팅에서는 컴퓨터 내부에서 표현할 수 있는 자료의 종류에 대해 포스팅 하려고 한다. 컴퓨터에서의 자료 표현 컴퓨터는 숫자, 문자, 그림, 소리 등의 모든 자료형식을 표현하기 위하여 1과 0만을 사용하는 2진수...
[자료구조] 1. 알고리즘 성능분석 방법 1. 알고리즘을 평가하는 중요한 두 가지 요소 어떤 알고리즘이 어떠한 상황에서 더 빠르고 또 느린가. -> 속도에 해당하는 알고리즘의 수행시간 분석 결과를 시간 복잡도 라 한다. 어떤 알고리즘이 어떠한 상황에서 메모리를 적...
들어가기 전 제이쿼리는 DOM을 조작하거나 Ajax 요청을 실행할 때 널리 쓰였던 라이브러리이다. 널리 쓰였던 이라고 표현한 이유에 대해서는 잠시 후 설명하겠다.
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. 들어가기 전 이번 포스팅부터는 강제 변환에 대해 포스팅을 한다. 먼저 명시적/암시적 강제변환에 앞서서 각 변환에 대한 ...
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. [들어가기 전] 네이티브는 내장 함수를 가리킨다. 네이티브란 단어가 자바스크립트에서 여기저기 남용되지만, 기본적인 정의...
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. [들어가기 전] 기존에 공부하였던 C++를 기준으로, 값은 사용하는 구문에 따라 값-복사나 레퍼런스-복사의 형태로 할당/...
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. [들어가기 전] 이번 포스팅은 숫자와 특수 값에 대한 자바스크립트 엔진에서의 특이한 점들에 대해 다룬다. 궁금한 사람만...
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. [들어가기 전] 오랜만에 블로그 포스팅이다. 자바스크립트에 대해 깊게 공부해야할 필요성을 점점 느끼고 있다. [문자열...
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. 들어가기 전 C언어 등 타입이 엄격한 언어들을 먼저 공부한 사람들은 자바스크립트의 배열을 보면 당혹스러우면서도 흥미로...
이 책은 You Don’t Know JS, 카일 심슨 저, 한빛미디어 를 공부하며 작성한 글입니다. 단순히 블로그만 읽는 것은 추천하지 않습니다. 들어가기 전 바닐라 자바스크립트에 대한 필요성을 느껴 요즘은 자바스크립트 공부를 하고 있다. 너무 재밌어서 시간이...
들어가기 전 자바스크립트에 대해 공부를 하며 포스팅을 하기로 마음먹었다. 먼저 자바스크립트는 대표적인 동적언어인데, 이에 대한 포스팅을 하며 자바스크립트의 문을 열어보려 한다. 정적 언어 (Statically Typed Language) 컴파일 시간에 변수의 타입...
[C++] 클래스의 기본 클래스와 구조체의 코드 상의 유일한 차이점 키워드 struct를 대신해서 class를 사용하면 구조체가 아닌 클래스가 된다. 다만 class로 키워드를 바꾸면 Car run99={“run99”,100,0}; 과 같은 방식으로 변수를 선언하지 못한...
[C++] 클래스의 기초 : C++에서의 구조체 구조체를 사용하면, 연관 있는 데이터를 하나로 묶으면 프로그램의 구현 및 관리가 용이하다. 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치로 데이터의 표현에 큰 도움을 준다. C++ 에서의 구조체 변수 선언 ...
[C++] new & delete 이 포스팅은 C언어의 malloc과 free를 이해하고, 힙의 메모리 할당 및 소멸에 필요한 함수가 malloc과 free인 것을 알고 있다는 가정하에 진행하는 포스팅입니다. malloc & free malloc &a...
[C++] 참조자(Reference)와 함수 Call-by-value & Call-by-reference call-by-value : 값을 인자로 전달하는 함수의 호출방식 call-by-reference : 주소 값을 인자로 전달하는 함수의 호출방식 이 두가지...
[C++] 매개변수의 디폴트 값 매개변수에 디폴트 값이 설정되어 있으면, 선언된 매개변수의 수보다 적은 수의 인자전달이 가능하다. 그리고 전달되는 인자는 왼쪽에서부터 채워져 나가고, 부족부분은 디폴트 값으로 채워진다. #include <iostream> usin...
[C++] unique를 이용한 벡터의 중복원소 제거 unique 함수란? vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수이다. algorithm 헤더에 존재한다. 중복되지 않는 원소들을 앞에서부터 채워나가는 역할을 하기때문에 남은 뒷부분은 그...
[C++] 참조자(Reference) 이해하기 참조자란 변수란 할당된 메모리 공간에 붙여진 이름. 여기에 이름을 더 부여할 수 있다(별칭같은 느낌) 참조자란 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름. #include <iostream> u...
[C++] auto 이해하기 auto란 c++ 11에서 타입 추론. auto 키워드는 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에 지시한다. auto 키워드를 사용하면 초깃값의 형식에 맞춰 선언하는 인스턴스(변수)의 형식이 자동으로 결정된다....
스프링 공부를 제대로 들어가보기 위해 코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단 책을 샀다!
맥 사용자들은 윈도우의 메모장 파일(.txt) 등을 받아서 맥os에서 실행시키면 아래와 같은 화면을 자주 보게 된다.
들어가기전 기존에 알고리즘 문제를 풀 때 C++을 사용하였는데, 맥북으로 노트북을 바꾸면서 코딩을 하던 비쥬얼 스튜디오를 더이상 사용할 수 없게 되었다.
삼성 청년 SW 아카데미 3기 합격후기 생애 처음으로 면접에서 합격 승전보를 울리게 되었습니다. 삼성 청년 SW 아카데미라는 교육에 합격하게 되었습니다. 일명 SSAFY 라고 불리는 교육입니다. 기쁜 마음으로 합격 후기를 써보려고 합니다. 다만 보안 서약서때문에 자세한 내용...
스마트폰에서 커밋 확인 - 잔디밭 빵구내지 말자! 깃젯 어플 발견 스마트폰에서는 깃허브 커밋 상태를 확인할 수가 없는 불편함이 있었다. 어플을 구경하던 중 깃젯이라는 어플을 보게되었다. 바로 이 어플이다. 위젯으로 깃허브 잔디밭을 볼 수 있는데, 그래서 이름...
깃허브 페이지를 선택하다. 블로그하면 알고있는 대표적인 플랫폼이 네이버 블로그, 티스토리 정도였는데 우연하게 에 대해 알게 되었다. 마침 블로그를 하려고 고민을 하던 중이었는데 보자마자 깃허브페이지로 블로그 만들어야겠다고 생각한 이유는 별다른 이유없이 친구의 추천과 더불어 간...