https://www.acmicpc.net/problem/2257C++의 stack STL을 이용하여 stack을 통해 입력값들의 화학식량을 계산요즘 C++을 배우고 있어서 배운 내용을 써먹어 보고자 수소, 탄소, 산소에 대응하는 원소의 화학식량을 저장하는 V
https://www.acmicpc.net/problem/19532이 문제는 a,b,c,d,e,f 입력을 받아서 두개의 방정식의 해를 구하는 문제이다.선형대수에서 배운 사람은 Cramer 공식을 활용하면 정말 쉽게 풀 수있고, 나 역시 Cramer 공식을 사용
백준 2609 https://www.acmicpc.net/problem/2609이 문제는 최대공약수와 최소공배수를 구하는 간단한 수학문제이다.최대공약수를 재귀를 사용해서 구한 뒤, 두 숫자 a,b의 곱을 최대공약수로 나눈 수가 최소공배수임을 이용해서 구현할 것
max, min의 경우 C언어에서는 조건문을 통해 찾았지만, 정렬을 통해 구하면 쉽게 최댓값, 최솟값을 찾을 수 있다.또한 Largest gap의 경우도 max함수를 사용하여 구할 것이다.C++이 C언어보다 훨씬 간결하고 편리하게 최대&최소를 구할 수 있다.
백준 1912 https://www.acmicpc.net/problem/1912두 개의 배열을 선언하는데 하나는 (A) 숫자를 입력받는 배열, 다른 하나는 (B) 연속합을 저장하는 배열로 선언을 한다.i번째 연속합을 저장하는 경우, i-1번째까지의 연속합을 저
백준 2740 https://www.acmicpc.net/problem/2740NXM 행렬 A와 MXK 행렬 B를 곱해서 NXK 행렬을 만드는 곱셈식을 구현할 것이다. 행렬에 대해서 배우면 알겠지만, A의 행과 B의 열을 곱해서 새로운 행렬의 행을 구성하기 때
백준 2635 https://www.acmicpc.net/problem/2635처음에는 입력한 N 값의 다음 수가 무작위 수이기 때문에 random 함수를 사용해야 하나 고민을 했었다. 하지만, 구하고자 하는 것은 최대 개수이기 때문에 전체 수의 경우의수를 비
백준 15720 https://www.acmicpc.net/problem/15720처음에 문제 조건에 있는 힌트를 간과하고 정렬하지 않은 상태에서 Set Menu 가격을 계산해서 잘못된 결과가 출력되었었다. 하지만, 힌트를 자세히 보면 첫번째 Set와 두번째
백준 2501 https://www.acmicpc.net/problem/2501입력 받은 N을 i로 나눴을 때 나머지가 0이 되는 수를 배열에 저장 한 뒤, K번째 (index=K-1) 수를 출력
배열에 크로아티아 알파벳을 저장하고, 입력한 문자열과 배열의 원소들을 비교하면서 일치하면 count를 늘리고 알파벳 길이 만큼 index를 증가시킨다. 배열에 없는 문자가 있으면 count를 증가시키는데 index는 1만큼 증가시킨다.substr 함수 사용
백준 2166 위의 관계를 보면 알겠지만, CCW를 시계방향으로 구하면 음수값이 출력되기 때문에 이 문제에서는 면적을 구하기 위해 절댓값을 취해줘야 한다.위의 식을 통해 구하면 또 하나의 벡터가 구해지는데, 그 벡터의 크기가 곧 a,b 벡터로 구성되는 평행사변형의 면적
백준 1292 https://www.acmicpc.net/problem/1292vector STL을 이용해서 이중 for문을 통해 index를 vector에 저장하고 A~B까지 for문을 돌려서 내부 원소를 출력Index를 출력하기 때문에 출력하는 for문을
완전수 = 자기 자신을 제외한 약수들의 합\-> 따라서 자기 자신을 제외하고 반복문을 돌려서 약수이면 배열에 저장을 한 뒤, 저장했던 배열을 다시 반복문을 돌려서 sum==num 이면 출력하고, 그렇지 않으면 NOT perfect를 출력1+2+3의 경우, 반복문과 조건
compare 함수를 선언해서 qsort로 내림차순 정렬을 한다문자열을 입력받아서 정렬한 수를 새로운 배열에 저장을 하는데, 길이가 정해져 있지 않으므로 동적할당으로 정렬한 수를 저장한다.기본구조\-base: 정렬하고자 하는 배열\-len : 배열의 원소의 수\-wid
다른 소수에 관련된 문제를 푸는 방식과 똑같이 하지만, n보다 크고 2n보다 작은 범위 내의 소수의 개수를 구하는 문제이므로 범위를 수정해야 한다.에라토스테네스의 체의 원리를 이해하고 적용한다.=> 특정 범위 내의 소수를 찾는데 효율적인 방법Step1 : 1을 제외시킨
백준 28278 https://www.acmicpc.net/problem/28278제일 아래가 C++ 버전, 제일 위가 C 버전이다 (중간엔 실수ㅎ)C++ 같은 경우, Stack STL이 존재하기 때문에 Stack을 선언한 뒤, STL에 있는 명령어로 Stac
백준 1644 https://www.acmicpc.net/problem/1644에라토스테네스의 체와 투포인터의 원리 이용입력한 값과 두개의 포인터가 가리키는 값 사이의 모든 값을 더한 값이 같으면 count++두 개의 vector를 선언해서 하나는 에라토스 테
백준 7561 https://www.acmicpc.net/problem/7561크래머 공식을 알고 있으면 그냥 구현만 하면 된다. 하지만, 문제 조건 중에서방정식이 많은 경우에는 행렬식을 구하는데 시간이 너무 많이 걸린다. 따라서, 이런 경우에는 다른 방법을
백준 1747 https://www.acmicpc.net/problem/1747에라토스테네스의 체로 소수를 걸러낸 뒤 palindrome 수를 판별하는 함수를 만들어서 두 가지 조건의 교집합을 구한다.N의 최대 숫자가 크기 때문에 따로 const int로 선언
백준 7785 https://www.acmicpc.net/problem/7785이름과 옵션을 입력받는데 입력 받은 옵션이 enter면 set에 이름을 insert하고, leave면 set에서 erase를 한다.(아래에서도 설명하겠지만, set은 순서라는 개념이
백준 1764 https://www.acmicpc.net/problem/1764이전에 풀었던 '회사에 있는 사람' 문제랑 상당히 유사한 문제이므로 같은 풀이 방식을 사용한다.크기가 N인 set와 M인 set 2개를 만들어서 insert 한 뒤, find를 통해
백준 1806 https://www.acmicpc.net/problem/1806투포인터 알고리즘을 이용해서 부분합을 구한다.count를 세야하기 때문에 vector의 index에 유의한다.입력한 값을 다 더한 뒤, 제일 앞 인덱스를 이동시키면서 제일 앞 ind
백준 23304 https://www.acmicpc.net/problem/23304문제 조건AKARAKA(아카라카)는 컴퓨터 과학적 관점으로 바라봤을 때, 튜링도 기립 박수를 치고 갈 가히 최고의 구호라 할 수 있다. AKARAKA는 그 자체로도 팰린드롬이고,
백준 3273 https://www.acmicpc.net/problem/3273투 포인터를 사용해서 Ai+Aj=x를 만족하는 수를 찾는다.순서 상관없이 두 수의 합만 x와 일치하면 되기 때문에 오름차순으로 정렬한 뒤 start 포인터는 0번 index에서, e
백준 6219 https://www.acmicpc.net/problem/6219매번 소수 관련 문제를 풀 때처럼 에라토스테네스의 체를 이용해서 소수를 걸러준 뒤 시작한다.숫자에 D가 포함되었는지 확인해야되기 때문에 hasDigit 함수를 만들어서 확인한 뒤 T
백준 1254 https://www.acmicpc.net/problem/1254팰린드롬인지 확인하는 코드는 여러번 해왔기 때문에 문제가 없다. 하지만, 예제 4번처럼 중간의 부분 문자열이 팰린드롬인 경우는 따로 확인을 해줘야 한다.브루트포스 알고리즘을 사용해
백준 1927 https://www.acmicpc.net/problem/1927우선순위 큐를 사용해서 입력 값에 따라 숫자를 push/pop 한다.우선순위 큐는 기본값이 queue에 들어간 숫자들이 제일 큰 수가 top에 있도록 정렬되기 때문에 greater&
백준 3896 https://www.acmicpc.net/problem/3896문제 해석 1\. 입력값이 소수가 아니면 입력값을 포함하고 있는 구간의 크기를 출력 ex) input = 15 -> 15보다 작은 소수 13 & 15보다 큰 소수 17 사이의
백준 9184 https://www.acmicpc.net/problem/9184문제에 주어진 Pseudo Code는 재귀로 구현하는 코드이다. 하지만, 문제에서도 주어져 있듯이 재귀로 구현하면 상당히 오랜시간이 걸리기 때문에 다이나믹 프로그래밍으로 구현을 해야
백준 2670 https://www.acmicpc.net/problem/2670다이나믹 프로그래밍 알고리즘을 이용하여 전까지의 계산 결과를 Dp 배열에 저장해 놓고, 다음 수를 곱한 새로운 값과 기존의 값을 비교하여 더 큰 값을 Dp의 현재 위치에 저장계산이
백준 2470 https://www.acmicpc.net/problem/2470문제가 길어서 난해할 것처럼 보이지만, 잘 보면 그냥 투포인터 알고리즘을 이용해서 합의 절댓값이 제일 작은 조합을 찾으면 되는 문제이다. (합의 절댓값이 제일 작아야 0과 가까운 수
백준 1270 https://www.acmicpc.net/problem/1270N만큼 반복하는 하나의 반복문 안에서 M을 입력받고 M만큼 숫자를 입력 받아서 Map에서 입력한 숫자와 동일한 index 위치의 값을 증가시킨다. M개의 숫자를 입력받은 뒤, max
백준 24726 https://www.acmicpc.net/problem/24726삼각형을 각각 x축, y축에 대해 회전시킨 회전체의 부피를 구하는 문제이기 때문에 파푸스의 정리를 이용할 것이다.파푸스의 정리를 사용하기 위해, CCW 알고리즘을 이용해 삼각형의
백준 21919 https://www.acmicpc.net/problem/21919에라토스테네스와 최대 공약수 알고리즘을 이용해서 문제를 푼다.최소 공배수는 a, b 두 수가 있을 때 a x b / (a와 b의 최대공약수) 임을 이용한다. 잘못된 코드 (답은
백준 2178 https://www.acmicpc.net/problem/2178이 문제는 깊이우선탐색(DFS)와 너비우선탐색(BFS) 둘 다 풀 수 있다. 하지만, 경로의 경우의 수에 따라 DFS는 시간복잡도가 매우 커질 수 있으므로 BFS로 풀었다.다른 경로
백준 1932 https://www.acmicpc.net/problem/1932문제를 보자 마자 파스칼의 삼각형 이론을 적용하면 점화식을 쉽게 구할 수 있을 것이라고 생각했다.2차원 배열로 DP 배열을 만든 뒤 DP\[i]\[j]는 DP\[i-1]\[j-1],
백준 16931 https://www.acmicpc.net/problem/16931처음에는 예제를 통해 접근을 했는데각 면을 면과 평행한 위치에서 바라보면 최댓값이 이루는 모양으로 보인다.따라서 각 행과 열에서의 최댓값들을 더한 뒤, 최댓값이 동일하면 그림에서
백준 2606 https://www.acmicpc.net/problem/2606이 문제는 깊이우선탐색(DFS)와 너비우선탐색(BFS) 둘 다 풀 수 있다. 하지만, 경로의 경우의 수에 따라 DFS는 시간복잡도가 매우 커질 수 있으므로 BFS로 풀었다.이번 학기
백준 3048 https://www.acmicpc.net/problem/3048두 개의 문자열을 받는 배열을 만든 뒤, 첫 번째 문자열에 들어 있는 문자의 순서를 역순으로 바꾸고 두 배열을 합친 새로운 배열로 진행.C++로 하려고 했는데 너무 복잡해져서 Pyt
백준 1904 https://www.acmicpc.net/problem/1904N에 따라서 DP 값을 구해서 규칙성을 파악한다.이런 식으로 N에 대해 모든 경우의 수를 나열해보았다. 그런데 이건 00, 1로만 구성하는거라 복잡할 줄 알았는데 N=6까지를 구해보
백준 13398 https://www.acmicpc.net/problem/133982차원 DP배열을 만들어서 첫 번째 행은 숫자를 제거하지 않는 경우, 두 번째 행은 숫자 1개를 제거한 경우를 나누어서 마지막에 두 행을 비교해서 더 큰 값이 구해지는 행을 출력
백준 17103 https://www.acmicpc.net/problem/17103먼저 에라토스테네스의 체 알고리즘으로 소수와 아닌 수를 걸러준 뒤, B 배열에 소수인 수들만 집어 넣어서 B의 배열을 돌면서 입력 받은 N값과 같아지는 합의 경우의 수를 구할 것
백준 2980 https://www.acmicpc.net/problem/2980그림을 그려서 관계를 확인하고, 여러 조건문으로 구해보고자 했다.그림을 보면 일단 처음과 제일 마지막은 신호등의 영향을 받지 않기 때문에 따로 더해주고, 신호등의 영향을 받는 신호등
백준 1613 https://www.acmicpc.net/problem/1613Floyd-Warshall algorithm은 원래는 그래프의 weight(거리)를 기준으로 최소 weight를 갖는 경로를 구하는 알고리즘이다. Dijkstra algorithm과
백준 16400 https://www.acmicpc.net/problem/16400이 문제와 풀이가 매우 유사하다.백준 2293 - 동전 1그렇기 때문에 2293 문제처럼 DP 점화식을 구하면 되는데, 단순히 2293 문제에서 동전이 소수인 수들로 바뀐점만 차
문제 - 숨바꼭질 (Silver1) [백준 6118] 풀이 전략 > 문제에서 주어진 힌트를 보면, 3개의 Node가 거리 2를 가진다고 주어져 있는데, 문제에서 1과의 거리가 멀어지면 멀어질 수록 발냄새가 줄어든다고 주어
백준 11003 https://www.acmicpc.net/problem/11003알고리즘 분류에 우선순위 큐와 덱을 이용하라고 주어져 있어서 C++의 deque 라이브러리를 이용하여 풀이를 하려고 했다. 보통 최솟값 문제의 경우 주어진 범위에서 min 함수를
백준 20040 https://www.acmicpc.net/problem/20040DisjointSet을 이용하는 문제이다. Union-Find 알고리즘을 이용하여 두 노드가 같은 집합에 있는지 확인하고 다른 집합에 있으면 합쳐주는 방식으로 집합을 구성한다.