본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 11637 : 인기 투표 https://www.acmicpc.net/problem/11637 11637번: 인기 투표 각 테스트 케이스는 첫 번째 줄부터 순서대로 출력된다. 최다 득표자가 과반수 득표를 했을경우에는 "majority winner R", 절반 이하의 득표를 하였을 경우엔 "minority winner R"가 되며, 최다 득표자가 없 www.acmicpc.net 조건에 따른 구현문제였습니다. 📕 풀이방법 📔 입력 및 초기화 1. test case 수 t, test case당 후보자 수 n, 전체 투표 수 totalVote, 최다 투표수 maxVote, 각 후보자의 투표수를 저장할 vector candidates, 최다 득표 후보자 번호를 저장할 vector majorCandidate를 선언한 후 적절히 입력받습니다...
(C++) - 백준(BOJ) 14491 : 9진수 https://www.acmicpc.net/problem/14491 14491번: 9진수 첫째 줄에 10진수 T(1 ≤ T ≤ 10,000)가 주어진다. www.acmicpc.net 진수변환을 구현하는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 10진수 t를 선언 후 입력받습니다. 📔 풀이과정 함수 convert()를 수행합니다. 1. 지역변수 tmp를 선언해 t값을 저장합니다. 2. 9진수 변환값을 저장할 문자열 s를 선언합니다. 3. tmp가 양수인 동안 while문을 수행합니다. 4. tmp % 9가 변환된 값이고 이를 s에 문자로 변환해 뒤에 붙여줍니다. 5. tmp = tmp / 9해줍니다. 6. s문자열을 뒤집어줍니다. 📔 정답출력 convert()의 반환값을 출력합니다. 📕 Code #i..
(C++) - 백준(BOJ) 1543 : 문서 검색 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 모든 경우의 수를 탐색하는 brute force문제였습니다. 📕 풀이방법 📔 입력 및 초기화 문서 docs, 검색 단어 searchWord, 정답 ans, 일치하는 문자 수를 저장할 변수 cnt, 단어의 길이 wordSize, 문서의 길이 docsSize를 저장합니다. 이후 docs와 searchWord에 문자열을 한 줄씩 입력받습니다. 📔 풀이과정 문서 전체에 대해 for loop를 수행합니다. 현재..
(C++) - 백준(BOJ) 12871 : 무한 문자열 https://www.acmicpc.net/problem/12871 12871번: 무한 문자열 첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 최대공약수 최소공배수를 구해 구현하는 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 s, t, ss, tt, 최소 공배수 lcmVal을 선언 후 문자열 s, t에입력받습니다. 📔 풀이과정 최소공배수만큼 문자열을 붙였을 때 둘이 같다면 무한대로 문자열을 늘려도 같습니다. * 단순히 s.size() * t.size()만큼 문자열을 붙인다면 메모리초과를 받게 됩니다. LCM(최소공배수) = 정수 a * 정수 b / GCD(최대공약수)(a, b)입니다...
(C++) - 백준(BOJ) 14912 : 숫자 빈도수 https://www.acmicpc.net/problem/14912 14912번: 숫자 빈도수 자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다. www.acmicpc.net brute force문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n, f, 빈도수를 저장할 일차원 배열 freq를 선언 후 적절히 입력받습니다. 📔 풀이과정 1 ~ n까지 for loop를 수행합니다. 현재 int형 정수를 string으로 변환 후 빈도수를 확인해 freq에 반영합니다. 📔 정답출력 freq의 f번째를 출력합니다. 📕 Code #include using namespace std; int n, f, freq[10]; string curNum; int main(){ cin >..
(C++) - 백준(BOJ) 14729 : 칠무해 https://www.acmicpc.net/problem/14729 14729번: 칠무해 조(Joe)는 중앙대학교 교수이고, 논리회로 설계 과목을 담당하고 있다. 그는 수업을 하면서 7명의 학생을 제외한 나머지 학생들에게 좋은 학점을 주겠다고 약속을 하였다. Joe 교수님을 돕기 위해 www.acmicpc.net 정렬문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n, 학생의 점수 * 1000을 저장할 일차원 배열 counting, cnt를 선언해줍니다. 이후 학생의 점수를 double형으로 입력받은 후 해당 값의 * 1000을 index로해 저장합니다. type casting에 유의해 저장합니다. 📔 풀이과정 1. 시간제한이 1초인 경우 n의 크기가 1천만이므로 counting sort를 사용해야 시간초..
(C++) - 백준(BOJ) 15489 : 파스칼 삼각형 https://www.acmicpc.net/problem/15489 15489번: 파스칼 삼각형 첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례로 주어진다. (단, 2 ≤ R+W ≤ 30, 2 ≤ C+W ≤ 30, 1 ≤ W ≤ 29, C ≤ R) www.acmicpc.net 범위를 입력받고 그 범위만큼 탐색해 답을 구하는 brute force로 해결한 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 r, c, w, 파스칼의 삼각형을 저장할 2차원 배열 pas, 정답을 출력할 변수 ans를 선언 후 적절히 입력받습니다. 📔 풀이과정 30까지의 파스칼 삼각형 수를 구해 pas에 저장해줍니다. 📔 정답출력 입력받은 범위만큼 for loop를 수행해 ans에 더해줍니다. 📕 Code #inclu..
(C++) - 백준(BOJ) 8892 : 팰린드롬 https://www.acmicpc.net/problem/8892 8892번: 팰린드롬 팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어이다. 예를 들어, civic, radar, rotor, madam은 팰린드롬이다. 상근이는 단어 k개 적혀있는 공책을 발견했다. 공책의 단어는 ICPC www.acmicpc.net 모든 경우의 수를 탐색하는 brute force문제였습니다. 📕 풀이방법 📔 입력 및 초기화 test case t, 단어의 개수 k, 단어들을 저장할 vector words를 선언한 후 적절히 입력받습니다. 📔 풀이과정 words의 모든 두 단어를 확인해 합쳐본 뒤 팰린드롬인지 확인해줍니다. 1. 두 단어는 각각 words[i] + words[j] 또는 words[j] ..