분류 전체보기 97

백준 9935번 문자열 폭발

문제 보러가기 : https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 이번 문제는 자료구조 문제였습니다. 처음에는 string의 find 함수와 erase 함수를 사용하여 문제를 풀어서 시간초과가 났습니다. 😅 《문제 풀이》 1. 입력 문자열을 하나씩 결과 문자열에 삽입 2. 결과 문자열의 마지막 문자가 폭발 문자열의 마지막 문자와 같으면 폭탄 문자열을 제거할 지를 검사 (1) 결과 문자열의 마지막 문자부터 폭발 문자열의 길이까지 비..

알고리즘/BOJ 2021.02.15

백준 14983번 서강그라운드

문제 보러가기 : www.acmicpc.net/problem/14938 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 이번 문제는 다익스트라(Dijkstra) 문제였습니다. 다익스트라 기본 문제에서 각 지역의 아이템 개수를 담을 배열만 추가해주면 됩니다. 😊 《문제 풀이》 1. 길은 양방향 통행이 가능하므로 두 지역을 양방향으로 연결 2. n개의 지역 중 습득 가능한 아이템의 최대 개수를 구해야 하므로 다익스트라 n번 수행 3. 낙하 지역을 제외한 모든 지역의 거리는 무한대로 초기화 (낙하 지역은 0) 4. 현재까..

알고리즘/BOJ 2021.02.12

백준 17144번 미세먼지 안녕!

문제 보러가기 : https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 이번 문제는 구현 문제였습니다. 공기청정기가 작동하여 미세먼지가 이동할 때에는 BFS 알고리즘처럼 구현하면 됩니다. [필요한 것] 1. 미세먼지 확산과 공기청정기가 작동했을 때의 미세먼지 이동을 기록할 배열 room (실제 값을 바꾸는 배열) 2. 미세먼지의 확산 가능 여부와 이동 가능 여부를 위한 배열 copyRoom (배열 room 복사본) 3. 공기청정기의 위쪽 칸과 아래..

알고리즘/BOJ 2021.02.09

백준 14002번 가장 긴 증가하는 부분 수열 4

문제 보러가기 : https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 이번 문제는 다이나믹 프로그래밍 문제였습니다. 11053번 가장 긴 증가하는 부분 수열 문제에서 조금 더 확장된 문제입니다. 가장 긴 증가하는 부분 수열의 길이 뿐만 아니라 가장 긴 증가하는 부분 수열도 출력해야 하기 때문에 부분 수열을 갱신할 벡터와 가장 긴 증가하는 부분 수열을 담을 벡터, 2개..

알고리즘/BOJ 2021.02.05

백준 11054번 가장 긴 바이토닉 부분 수열

문제 보러가기 : https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 이번 문제는 다이나믹 프로그래밍 문제였습니다. 11053번 가장 긴 증가하는 부분 수열 문제와 유사하지만 이번 문제는 감소하는 부분 수열도 찾아줘야 했습니다. 《문제 풀이》 1. 가장 긴 증가하는 부분 수열의 길이를 기록할 배열 incre 와 가장 긴 감소하는 부분 수열의 길이를 기록할 배열 decre 2. incre 배열에서 자기 자신의 증가하는 부분 수열의 길이는 1이므로 모두 1로 초기화 3...

알고리즘/BOJ 2021.02.03

백준 18119번 단어 암기

문제 보러가기 : https://www.acmicpc.net/problem/18119 18119번: 단어 암기 준석이는 영어 단어를 외우려고 한다. 사전에는 N가지 단어가 적혀 있다. 모든 단어는 소문자이다. 단어 안에 있는 모든 알파벳을 알 때, 그 단어를 완전히 안다고 한다. 다음과 같은 쿼리들이 주 www.acmicpc.net 이번 문제는 비트 마스킹 문제였습니다. 정수의 2진수 표현을 자료구조로 쓰는 기법을 비트 마스킹이라고 합니다. 비트 마스킹 기법을 활용하여 문제를 풀면 시간 단축, 메모리 절약을 할 수 있습니다. 문제 풀이를 하기 전에 문제를 풀 때 사용했던 비트 연산자들을 테이블로 정리했습니다. 비트 연산자 연산자 설명 예시 a >N>>M; int remember = 0; // 처음에는 모..

알고리즘/BOJ 2021.02.02

백준 12865번 평범한 배낭

문제 보러가기 : https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 이번 문제는 다이나믹 프로그래밍(DP) 문제였습니다. 《문제 풀이》 1. 물건의 무게와 가치를 쌍으로 묶어서 벡터에 삽입 2. 물건들의 가치합을 담을 배열 dp 초기화 (1) dp 배열의 행은 물건을 나타내고 (첫번째 물건, 두번째 물건, ...) 열은 물건의 무게를 나타냄 (0 ~ K) (2) 첫번째 물건의 무게..

알고리즘/BOJ 2021.01.30

자주 쓰이는 CSS 속성들

프로젝트를 만들면서 자주 쓰였던 CSS 속성들을 정리해 보았습니다. 😊 1. 커서가 요소 위에 있을 때 속성값 변경 웹페이지를 이용할 때 사용자가 현재 어떤 요소를 바라보고 있는지 알 수 있도록 하는 것은 UX(사용자 인터렉션)에서 중요한 부분입니다. 사용자의 커서가 텍스트, 버튼, 링크 등을 가리킬 때 색상을 다르게 지정해 준다든지, 크기가 커지도록 한다든지 등 변화를 주면 사용자의 웹페이지 이용에 대한 만족감을 높일 수 있습니다. :hover :hover CSS 의사 클래스는 사용자가 포인팅 장치를 사용해 상호작용 중인 요소를 선택합니다. 보통 사용자의 커서(마우스 포인터)가 요소 위에 올라가 있으면 선택됩니다. 📝 예제 button { color: black; transition: color .5s..

CSS 2021.01.28

백준 17070번 파이프 옮기기 1

문제 보러가기 : https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 이번 문제는 그래프 탐색 문제였습니다. DFS / BFS 둘 다 문제 풀이 하겠습니다. 파이프의 한쪽 끝을 (n, n) 으로 이동시키는 방법의 개수를 출력해야하기 때문에 방문 여부를 확인해줄 필요는 없습니다. BFS 설명 《문제 풀이》 1. 집의 상태를 배열로 입력 받고 파이프 옮기기 2. 파이프가 가로 / 세로 / 대각선 방향 중 어느 방향의 파이프인지..

알고리즘/BOJ 2021.01.27

백준 4179번 불!

문제 보러가기 : https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 이번 문제는 너비 우선 탐색(BFS) 문제였습니다. 시작점이 두 종류이므로 불을 위한 bfs, 지훈이를 위한 bfs를 각각 돌려야합니다. [필요한 것] 1. 불의 전파 시간을 기록할 배열 dist1 (-1로 초기화) 2. 지훈이의 탈출 시간을 기록할 배열 dist2 (-1로 초기화) 3. 불의 bfs를 위한 큐 q1 4. 지훈이의 bfs를 위한 큐 q2 《문제 풀이..

알고리즘/BOJ 2021.01.26
반응형