본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 13623 : Zero or One https://www.acmicpc.net/problem/13623 13623번: Zero or One Everyone probably knows the game Zero or One (in some regions in Brazil also known as Two or One), used to determine a winner among three or more players. For those unfamiliar, the game works as follows. Each player chooses a value between zero or one; pro www.acmicpc.net 입출력, if문을 사용해보는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 a, b, c를 선언 후 입력받습니다. 📔 정..
(C++) - 백준(BOJ) 13416 : 주식투자 https://www.acmicpc.net/problem/13416 13416번: 주식 투자 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에는 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 www.acmicpc.net greedy문제였습니다. 📕 풀이방법 📔 입력 및 초기화 test case 수 t, 주식 일 수 n, 정답을 출력할 변수 ans를 선언한 후 적절히 입력받습니다. 📔 풀이과정 1. n만큼 for loop를 수행하며 A,B,C사의 이익과 손해 data를 변수 a,b,c를 선언해 입력해줍니다.2. 지역변수 profit을 선언해 a,b,c중 최댓값을 저장해줍니다.3. profit이 음수라면 무조건 손해이기..
(C++) - 백준(BOJ) 1025 : 제곱수 찾기 https://www.acmicpc.net/problem/1025 1025번: 제곱수 찾기 첫째 줄에 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 표에 적힌 숫자가 1번 행부터 N번 행까지 순서대로 한 줄에 한 행씩 주어진다. 한 행에 적힌 숫자는 1번 열부터 M번 열까지 순서대로 주어지 www.acmicpc.net brute force 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n행 m열, 정답 변수 ans, 수가 적힌 표를 의미하는 이차원 배열 chart를 선언한 뒤 정보를 입력받습니다.ans는 -1로 초기화해줍니다. 답이 없는 경우 -1을 출력하기 위함입니다. 📔 풀이과정 뽑은 수의 행과 열좌표들을 나열했을 때 각각 행끼리는 등차수열, 각각의 열끼리도 등차수열인 수가 완전 제곱수인 모든 경우..
(C++) - 백준(BOJ) 5397 : 키로거 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net std::list를 사용해 푼 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 test case t, keyLog, list li를 선언한 뒤 적절히 입력해줍니다. 매 test case마다 li는 clear()해줍니다. 📔 풀이과정 array의 삽입, 삭제 수행시간은 중앙에 값이 삽입 또는 삭제되었을 때 나머지 원소를 당겨주는 시간까지 포함해 O(n)입니다. L이 100만 제한이므로 삭제, ..
(C++) - 백준(BOJ) 1937 : 욕심쟁이 판다 https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net dp로 푼 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 상, 하, 좌, 우로 이동 및 비교를 위한 일차원 배열 dr, dc, 대나무 숲 정보를 저장할 이차원 배열 bamboo, 판다의 정보를 저장할 이차원 배열 live, 대나무 숲의 한 변 너비 n, 정답을 출력할 변수 ans를 선언해 줍니다. 📔 풀이과정 bfs혹은 dfs를 수행하려면 brute force처럼 i,j에 배치해 모든 ..
(C++) - 백준(BOJ) 10104 : Party Invitation https://www.acmicpc.net/problem/10104 10104번: Party Invitation The first line of input contains the integer K (1 ≤ K ≤ 100). The second line of input contains the integer m (1 ≤ m ≤ 10), which is the number of rounds of removal. The next m lines each contain one integer. The ith of these lines (1 ≤ i ≤ m) www.acmicpc.net 자료구조를 사용하는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 친구 수 k, list에서 지워지는 단위 m, 친구 list frie..
(C++) - 백준(BOJ) 5555 : 반지 https://www.acmicpc.net/problem/5555 5555번: 반지 당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을 www.acmicpc.net 특정 문자열을 찾는 find함수를 사용해 푼 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 찾을 문자열 stringToFind, 반지에 써있는 문구 ringString, 반지 개수 n, 정답 출력할 변수 cnt를 선언한 후 적절히 입력받습니다. 📔 풀이과정 제한이 적으므로 다양한 풀이가 있습니다. brute force로도 풀 수 있지만 std::find함수를 사용하면 간단히 특정 문자열이 있는지 O(N)으로..
(C++) - 백준(BOJ) 16435 : 스네이크버드 https://www.acmicpc.net/problem/16435 16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net greedy로 푼 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 처음 스네이크버드의 길이 snakeBirdLength, 과일 개수 n, n개의 과일 높이 정보를 저장할 vector fruitHeight를 선언 한 후 적절히 입력받습니다. 📔 풀이과정 새가 제일 길어지려면 과일을 최대한 많이 먹어야 합니다. 이를 위해 과일 높이를 오름차순으로 정렬..