알고리즘/BOJ 1235

백준 15970번 화살표 그리기

문제 링크입니다: https://www.acmicpc.net/problem/15970 15970번: 화살표 그리기 직선 위에 위치를 나타내는 0, 1, 2, ...와 같은 음수가 아닌 정수들이 일정한 간격으로 오른쪽 방향으로 놓여 있다. 이러한 위치들 중 N개의 위치에 하나씩 점들이 주어진다(). 주어진 점들의 위치는 모두 다르다. 두 점 사이의 거리는 두 점의 위치를 나타내는 수들의 차이이다. 에서는 4개의 점이 주어지고 점 a와 b의 거리는 3이다. 각 점은 N개의 색깔 중 하나를 가진다. 편의상, 색깔은 1부터 N까지의 수로 표 www.acmicpc.net 각 색깔마다 좌표들을 저장하고 오름차순 정렬을 한 뒤 가장 가까운 점끼리 직선을 이은 거리들의 합을 구하면 되는 문제였습니다. 자세한 내용은 코..

알고리즘/BOJ 2020.02.14

백준 5639번 이진 검색 트리

문제 링크입니다: https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 문제 이진 검색 트리는 다음과 같은 세 가지 조건을 만족하는 이진 트리이다. 노드의 왼쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 작다. 노드의 오른쪽 서브트리에 있는 모든 노드의 키는 노드의 키보다 크다. 왼쪽, 오른쪽 서브트리도 이진 검색 트리이다. 전위 순회 (루트-왼쪽-오른쪽)은 루트를 방문하고, 왼쪽 서브트리, 오른쪽 서브 트리를 순서대로 방문하면서 노드의 키를 출력한다. 후위 순회 (왼쪽-오른쪽-루트)는 왼쪽 서브트리, 오른쪽 서브트리, www.acmicpc.net 일단 문제에서 데이터가 몇 개 입력될지 모르므로 반복문과 scanf를 이용해서 데이터를 노드 값을 입력받아야했습..

알고리즘/BOJ 2020.02.07

백준 1244번 스위치 켜고 끄기

문제 링크입니다: https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 있다. 셋째 줄에는 학생수가 주어진다. 학생수는 100 이하인 양의 정수이다. 넷째 줄부터 마지막 줄까지 한 줄에 한 학생의 성별, 학생이 받은 수가 주어진다. 남학생은 1로, 여학생은 2로 표시하고, 학생이 받은 수는 스위치 개수 이하인 양의 정수이다. 학생의 성 www.acmicpc.net 문제에서 주어진 조건대로 코드를 작성하면 되는 문제였습니다. 보통 여학생이 주어졌을 때 헤매셨을 것이라고 생각..

알고리즘/BOJ 2020.02.05

백준 13459번 구슬 탈출

문제 링크입니다: https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로 이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다. 입력되는 모든 보드 www.acmicpc.net 같은 코드를 반복적으로 쓰지 않기 위해 고민을 많이해야하는 BFS 문제였습니다. 가독성을 위해 상수를 별도로 선언..

알고리즘/BOJ 2020.02.05

백준 2615번 오목

문제 링크입니다: https://www.acmicpc.net/problem/2615 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호가 붙고 세로줄은 왼쪽에서부터 오른쪽으로 1번, 2번, ... 19번의 번호가 붙는다. 위의 그림에서와 같이 같은 색의 바둑알이 연속적으로 다섯 알을 놓이면 그 색이 이기게 된다. 여기서 연속적이란 가로, 세로 또는 대각선 방향 모두를 뜻한다. 즉, 위의 그림 www.acmicpc.net 간단해보이지만 "육목 이상은 승리 조건이 아니다"라는 조건 때문에 예외 처리를 철저하게 해야하는 문제였습니다. 승리했을 때..

알고리즘/BOJ 2020.02.03

백준 17299번 오등큰수

문제 링크입니다: https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net N이 최대 1,000,000이기 때문에 O(N^2) 풀이법을 사용하여 풀었다면 TLE가 발생하는 문제였습니다. 따라서 저는 스택을 이용하여 역순으로 확인하며 결과들을 result 배열에 저장했습니다. 자세한 풀이는 주석을 확인해주시면 될 것 같습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2020.01.31

백준 15596번 정수 N개의 합

문제 링크입니다: https://www.acmicpc.net/problem/15596 15596번: 정수 N개의 합 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다. C, C11, C (Clang), C11 (Clang): long long sum(int *a, int n); a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000) n: 합을 구해야 하는 정수의 개수 리턴값: a에 포함되어 있는 정수 n개의 합 C++, C++11, C++14, www.acmicpc.net 간단한 함수 작성 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓..

알고리즘/BOJ 2020.01.30

백준 1816번 암호 키

문제 링크입니다: https://www.acmicpc.net/problem/1816 1816번: 암호 키 현대 사회에서 통용되고 있는 많은 종류의 암호 시스템에서는, 매우 큰 소수의 곱으로 만들어진 수를 암호 키로 이용하는 경우가 많다. 현실적으로 매우 큰 수를 빠른 시간 내에 소인수분해하는 것은 어려운 일이기 때문이다. 물론 실제 생활에서는 수십만 또는 수백만 자리 이상의 매우 큰 소수가 활용되지만 그러한 소수를 구하는 것은 매우 어려운 일이므로, 우리는 좀 더 스케일이 작은 경우에 대해서만 생각해 보기로 하자. 1,000,000=10^6보다 큰 소수이면 www.acmicpc.net 에라토스테네스의 체를 이용하여 소수를 구하고 S가 그 소수들에 의하여 나누어 떨어지지 않는지를 판별하는 문제였습니다. 개..

알고리즘/BOJ 2019.11.25

백준 3671번 산업 스파이의 편지

문제 링크입니다: https://www.acmicpc.net/problem/3671 3671번: 산업 스파이의 편지 문제 안녕하세요. 저는 산업 스파이입니다. 저의 정체를 절대 다른 사람에게 말하지 말아주세요. 저의 가장 최근 일은 유명한 수학 연구소의 최신 연구 결과를 훔쳐오는 것이었습니다. 저는 매우 유능한 산업 스파이이기 때문에, 연구 결과를 어렵지 않게 얻을 수 있었습니다. 하지만, 제가 올 것을 미리 알았는지 연구소에서는 연구 결과를 모두 서류 절단기에 넣어버렸습니다. 어쩔수 없이 저는 눈물을 머금고 종이 조각을 모두 훔쳐왔습니다. 저를 고용한 사람은 매우 무 www.acmicpc.net 에라토스테네스의 체와 next_permutation을 이용하여 풀면 되는 문제였습니다. 코드 내용이 간단하기..

알고리즘/BOJ 2019.11.24