알고리즘 1605

[Programmers] 멸종위기의 대장균 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/301651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL을 이용하여 풀었습니다. 재귀 쿼리를 이용해 각 대장균의 세대를 정의한 테이블(ECOLI_GENERATIONS)을 정의합니다. 이후 세대 별로 타 대장균들의 부모가 아닌 대장균들을 출력합니다. ECOLI_GENERATIONS를 정의한 쿼리는 아래와 같습니다. 전체 코드는 다음과 같습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨..

[Programmers] Python 개발자 찾기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/276013 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단한 SELECT문 작성 문제였습니다. MySQL을 이용하여 풀었습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~ 반응형

백준 2170번 선 긋기

문제 링크입니다: https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net x와 y 값이 최대 10억이기 때문에 boolean 배열을 선언한 뒤 마킹하는 식으로 풀 수 없는 문제였습니다. 이에 따라 {x, y} 쌍을 저장하는 벡터를 선언하고 오름차순으로 정렬한 뒤 라인 스위핑 기법으로 푸는 문제였습니다. 현재 구간의 y보다 다음 구간의 x가 더 클 경우 현재 [x, y) 길이를 더함 현재 구간의 y가 다음 구간의 x와 y..

알고리즘/BOJ 2024.04.03

백준 14729번 칠무해

문제 링크입니다: https://www.acmicpc.net/problem/14729 14729번: 칠무해 조(Joe)는 중앙대학교 교수이고, 논리회로 설계 과목을 담당하고 있다. 그는 수업을 하면서 7명의 학생을 제외한 나머지 학생들에게 좋은 학점을 주겠다고 약속을 하였다. Joe 교수님을 돕기 위해 www.acmicpc.net 우선순위 큐를 이용하면 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.04.03

백준 15926번 현욱은 괄호왕이야!!

문제 링크입니다: https://www.acmicpc.net/problem/15926 15926번: 현욱은 괄호왕이야!! 첫 번째 입출력에서, 맨 처음 위치부터 4개를 잘라낸 (())가 가장 긴 올바른 괄호 문자열이다. 두 번째 입출력에서, 6번째 위치부터 8개를 잘라낸 ()((()))가 가장 긴 올바른 괄호 문자열이다. www.acmicpc.net 스택과 배열을 이용하면 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 왼쪽 괄호이면 해당 인덱스를 스택에 넣어줍니다. 2. 오른쪽 괄호이고 유효한 괄호 쌍일 경우 ')' 인덱스와 스택의 top에 위치한 '(' 인덱스를 꺼내와 correct 배열에 true로 표기합니다. 3. 주어진 문자열에 대해 2번 과정을 거친 후 correct 배열에서 연속..

알고리즘/BOJ 2024.03.31

백준 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