알고리즘/BOJ 1219

백준 15353번 큰 수 A+B (2)

문제 링크입니다: https://www.acmicpc.net/problem/15353 15353번: 큰 수 A+B (2) C++17, C11, C99, C++98, C++11, C++14, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang) www.acmicpc.net 주어진 숫자가 최대 만 자리이기 때문에 long long 자료형으로도 풀 수 없는 문제였습니다. 따라서 문자열을 통해 덧셈을 직접 구현해야 하는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.31

백준 13244번 Tree

문제 링크입니다: https://www.acmicpc.net/problem/13244 13244번: Tree For each graph, a single line with “tree” if the graph represents a tree or “graph“ otherwise. www.acmicpc.net 그래프가 트리이기 위해서는 다음 조건을 성립해야 합니다. 1. 정점의 개수 = 간선의 개수 + 1 2. DFS 혹은 BFS 알고리즘을 돌렸을 때 모든 정점은 이어져있다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.31

백준 14405번 피카츄

문제 링크입니다: https://www.acmicpc.net/problem/14405 14405번: 피카츄 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문 www.acmicpc.net 단순 재귀함수로 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.31

백준 14391번 종이 조각

문제 링크입니다: https://www.acmicpc.net/problem/14391 14391번: 종이 조각 영선이는 숫자가 쓰여 있는 직사각형 종이를 가지고 있다. 종이는 1×1 크기의 정사각형 칸으로 나누어져 있고, 숫자는 각 칸에 하나씩 쓰여 있다. 행은 위에서부터 아래까지 번호가 매겨져 있고, www.acmicpc.net 이 문제의 핵심은 정사각형 칸을 어떻게 쪼갤 것인지를 구현하는 과정에 있었습니다. 아래와 같이 비트마스킹을 이용하여 모든 경우의 수를 탐색하면 풀 수 있습니다. 0: 숫자를 가로로 이어 붙인다 1: 숫자를 세로로 이어 붙인다 위 표를 비트마스킹으로 구현하면 아래와 같습니다. 0001110111110011 위 비트를 주어진 N, M을 기반으로 표로 만들면 다음과 같습니다. 개발환..

알고리즘/BOJ 2024.03.31

백준 1285번 동전 뒤집기

문제 링크입니다: https://www.acmicpc.net/problem/1285 1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위 www.acmicpc.net 얼핏 보면 시간 복잡도가 O(2^40)으로 보여 시간 안에 풀지 못할 문제처럼 보이는 문제였습니다. 하지만 다음과 같이 문제를 쪼개면 시간 내 풀 수 있는 문제입니다. (시간 복잡도: 400 * 2^20) 가능한 모든 조합에 대해 열을 직접 뒤집어 본다 (시간 복잡도: O(2^20)) 열은 이미 뒤집혔고 행을 뒤집을 차례인데 행 내 뒷면 동전 개수를 파악하면 직접 뒤집을 필요..

알고리즘/BOJ 2024.03.30

백준 19942번 다이어트

문제 링크입니다: https://www.acmicpc.net/problem/19942 19942번: 다이어트 식재료 N개 중에서 몇 개를 선택해서 이들의 영양분(단백질, 탄수화물, 지방, 비타민)이 일정 이상이 되어야 한다. 아래 표에 제시된 6가지의 식재료 중에서 몇 개를 선택해서 이들의 영양분의 각 www.acmicpc.net N이 최대 15이기 때문에 비트마스킹을 통해 완전탐색으로 풀어도 TLE가 발생하지 않는 문제였습니다. 적합한 재료 조합이 있고 같은 비용의 집합이 하나 이상이면 사전 순으로 가장 빠른 것을 출력해야 하므로 map와 같은 다소 기괴한 자료구조를 선언해야 합니다 key: 최소 비용 value: 재료 조합을 오름차순 한 set 개발환경:Visual Studio 2022 지적, 조언,..

알고리즘/BOJ 2024.03.30

백준 1189번 컴백홈

문제 링크입니다: https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net R, C, K 범위가 작기 때문에 완전탐색으로 풀어도 되는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.03.27

백준 14620번 꽃길

문제 링크입니다: https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net 전형적인 백트래킹 문제였습니다. 알고리즘은 아래와 같습니다. 1. 꽃은 상하좌우 칸이 모두 확보되어 있어야 하므로 y축, x축 모두 [0, N)이 아닌 [1, N - 1) 내에 꽃을 심어야 합니다. 2. 1번 로직에 따라 [1, N - 1) 내 가능한 칸마다 꽃을 심어봅니다. 2.1 꽃을 세 개 심었을 때 result 값을 갱신해줍니다. 3. 2번 과정을 마치면 최소 비용인 r..

알고리즘/BOJ 2024.03.26

백준 9934번 완전 이진 트리

문제 링크입니다: https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net 중위 순회 결과를 기반으로 트리를 그려나가면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 서브 트리의 root 노드는 서브 트리 중위 순회 결과의 가운데 노드입니다. 2. 문제에서 주어진 대로 서브 트리의 루트 노드 이후 왼쪽 서브트리, 오른쪽 서브트리를 방문하며 방문한 순서대로 벡터에 저장합니다. 3. 2번에서 구한 결과를 출력합니다. 개발환경..

알고리즘/BOJ 2024.03.26

백준 14497번 주난의 난(難)

문제 링크입니다: https://www.acmicpc.net/problem/14497 14497번: 주난의 난(難) 주난이는 크게 화가 났다. 책상 서랍 안에 몰래 먹으려고 숨겨둔 초코바가 사라졌기 때문이다. 주난이는 미쳐 날뛰기 시작했다. 사실, 진짜로 뛰기 시작했다. ‘쿵... 쿵...’ 주난이는 점프의 파 www.acmicpc.net 문제의 핵심은 주난이의 파동이 장애물을 만날 때까지 상하좌우 4방향으로 퍼진다는 것입니다. 알고리즘은 아래와 같습니다. 1. BFS 알고리즘을 수행하되 1.1 장애물이 없을 경우 현재 queue에 넣고 1.2 장애물을 만날 경우 해당 좌표는 다음 queue에 넣습니다. 1.3 현재 queue에 대한 탐색이 완료될 경우 현재 queue를 다음 queue로 세팅하고 점프 ..

알고리즘/BOJ 2024.03.23