Info난이도 : SILVER3유형 : DataStructurehttps://www.acmicpc.net/problem/24511* 잘못된 풀이는 별도의 해설을 작성하지 않으며, 깃허브 링크만 제공합니다. Solve풀이1) 문제 요구사항대로 n개의 스택, 큐를 만들어 계산 [실패]시간복잡도를 전혀 고려하지 않은 풀이라 O(m*n) 100,000,000,00 대략 100s가 걸려 시간초과가 발생했다. vector res; for (int i = 0; i > x; for (int j = 0; j https://github.com/novvvv/PS/blob/main/BOJ/2025/C%2B%2B/fail/24511.cpp PS/BOJ/2025/C++/fail/24511.cpp at ma..
#INFO알고리즘 유형 : 시뮬레이션 & 구현난이도 : SILVER2 #SOLVE현재 지도의 모습을 기준으로 50년 뒤의 지도의 모양을 출력하는 구현 문제이다. 우선 2차원 배열을 선언한 뒤 현재 지도의 모습을 배열에 저장한다. "."으로 표시된 부분은 "바다"이며, "X"로 표시된 부분은 "섬"이다. // #1 Input & init Value vector> board; int R, C; cin >> R >> C; for (int i = 0; i line(C); for (int j = 0; j > line[j]; } board.push_back(line); } 문제 조건에 의하면 현재 섬을 기준으로 인접한 세 칸 혹은 네 칸이 바다..
#INFO알고리즘 유형 : 시뮬레이션 & 구현난이도 : SILVER4 #SOLVE문제에서 주어진 조건대로 차근차근 구현하면 되는 비교적 간단한 구현 문제이다. 우선 키보드 자판을 저장할 2차원 배열을 선언한 뒤, 정보를 저장한다. /* value */vector > board(3);const vector line1 = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'};const vector line2 = {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'};const vector line3 = {'z', 'x', 'c', 'v', 'b', 'n', 'm'}; 다음으로 처음 왼손 검지 손가락 오른손 검지 손가락 알파벳 위치를 입력받은 뒤..
#Infohttps://www.acmicpc.net/problem/1654#Logic만들 수 있는 최대 랜선의 길이를 구하는 문제이다.처음으로 가장 단순한 알고리즘인 브루트포스 방식으로 접근해 보았다. 1cm부터 랜선의 최대 길이만큼 반복문을 돌려서, 가능한 모든 경우를 계산하는 로직이다. 하지만 해당 방식은 시간 복잡도가 최소 O(N) 만큼 소모되며,랜선의 최대 길이는 2^31 - 1 이기에 절대로 시간제한 2초 안에 통과할 수 없다. 다음으로 이분탐색 풀이로 접근해 보았다.About Binary Search이분탐색 알고리즘은 시간 복잡도가 O(LogN) 만큼 걸리기에, 충분히 통과 가능하다. 우선, 랜선의 개수 K, 필요한 랜선의 개수 N을 입력 받은 뒤랜선의 길이 정보를 lines vector에 ..
https://www.acmicpc.net/problem/11723 #문제접근문제를 제출한 뒤 알고리즘 분류를 보니 "비트 마스킹" 알고리즘을 사용해야 하는 문제였던 것 같다.시간제한이 1.5초인데 반해 연산의 수는 300만 개로 매우 많다.하지만 아직 비트 마스킹 알고리즘에 대해 공부하지 않았기에 set 자료구조를 사용해 문제를 풀이했다.set 자료구조를 사용해 문제를 풀이하기 위해선 가능한 모든 시간 최적화 방안을 도입해야만 했다. set 자료구조 중에 hash table로 구현된 set 을 선택하였다.hash table 은 삽입, 삭제 연산이 O(1) 만에 이루어지기에 다른 set 자료구조에 비해서 효율적이다.물론 문제 출제자가 의도적으로 최악의 해시 충돌을 강제하는 테스트케이스를 다량으로 추가..