\+와 - 연산자만이 주어졌을 때 주어진 식에 괄호를 처서 최소값을 출력하는 문제.모든 +식에 괄호를 치고 -를 나중에 계산하는 방식으로 최소값을 만들 수 있다.문제 풀이를 두 파트로 나누어 진행하였다.1\. string으로 주어지는 수식 분해2\. 숫자 계산strin
2606: 바이러스입력으로 주어진 번호 쌍을 벡터에 넣어서 각 번호의 컴퓨터가 어떤 컴퓨터와 이어져있는지 정리한다.그 후 1번 컴퓨터와 연결된 다른 컴퓨터의 개수를 세면 끝.visited 변수를 잘 이용하여 이미 카운트 한 컴퓨터는 재탐색 하지 않도록 하는 것과 재귀함
1182: 부분수열의 합부분 수열을 더해서 주어진 s가 되는 경우의 수를 구하는 문제.dfs로 전수조사 하는 방식으로 해결 할 수 있다.각 노드를 더할지 말지 결정하는 방식을 가진 dfs를 사용하면, 부분 수열을 쉽게 만들 수 있다.3,5,-2,-3 의 경우, 부분 수
1012: 유기농 배추배추를 지키기 위해 필요한 지렁이의 마리 수를 구하는 문제.연결된 배추의 영역의 개수를 구하면 된다.DFS로도 풀 수 있지만 BFS를 이용하여 풀어보았다.입력으로 주어진 배추의 위치를 2차원 배열에 저장하여, 예시로 주어진 것과 같은 표를 만든다.
집합 S에 포함되는 문자열의 개수를 세는 문제. 테스트 케이스가 많아서 일반적인 비교로는 풀 수 없다. >c의 stdio와 c++의 iostream 간의 동기화를 끊어주고, cin과 cout의 묶음을 풀어주는 방식으로는 역부족이다. 따라서 시간 초과를 해결하기
가장 오른쪽 도시까지 가는데 드는 최소 비용을 구하는 문제.현재 시점에서 최소 비용을 비교하면 쉽게 풀 수 있다.기름을 한 번에 넣어간다는 생각으로 접근하면 쉽지 않다. 대신 기름이 더 싼 경우 최저가격을 갱신하고, 그렇지 않으면 기존 가격을 유지한다고 생각하면 쉽다.
k개의 랜선으로 n개의 랜선을 만들 때, 최대 길이를 구하는 문제.1부터 주어진 최대 길이의 랜선 사이의 길이를 고르면 된다.1과 최대 길이값의 중간 길이부터 시작한다. 랜선을 잘랐을 때,n보다 많거나 같은 개수가 만들어진다면 현재 길이보다 길게 잘라도 된다.최소값을
주어진 두 사람의 촌수를 계산하는 문제.dfs로 주어진 두 노드 간의 거리를 구하면 된다.dfs의 매개변수에 노드간의 거리를 계산할 수 있는 chon이라는 변수를 만들어 주었다.dfs가 실행되어 깊이가 깊어질 때마다 chon의 값을 1씩 증가시키면 촌수 계산을 쉽게 할
이런 구조로 바꿔서 생각하면 접근이 훨씬 수월하다.피라미드를 채우는 데에는 총 3가지 움직임이 필요하다.아래로 이동오른쪽으로 이동좌측 상단으로 이동이 3가지 움직임을 반복하면 올바르게 피라미드를 채울 수 있다.
모든 인원을 심사하는데 걸리는 최소 시간과 최대 시간을 가정한 뒤, 그 값들을 이용하여 시간을 계산해볼 수 있다.가장 적게 걸리는 시간은 1, 가장 많이 걸리는 시간은 times배열의 가장큰 값에 n을 곱한 값이다.처음에는 가장 적게 걸리는 시간을 n명의 인원 \* 1
코드트리\_숫자 합치기그리디 알고리즘을 사용하여 풀어야하는 문제이다.n개의 숫자 중 2개를 골라 더하는 과정을 숫자가 하나 남을 때 까지 반복한다.숫자를 더하는 과정에서 발생하는 비용의 최소값을 구하면 된다.당연하게도 시간초과가 발생할 것같다.숫자를 오름차순으로 정렬하