https://www.acmicpc.net/problem/1874 문제1이상 n(1 풀이스택에 직접 오름차순으로 수를 push하고 현재 인덱스 값과 스택 top이 같은 경우 pop한다. 연산 과정은 벡터에 저장한다.\#include #include #include using namespace std;int n, arr[100010], idx = 1;stack s;vector v;int main() { cin >> n; for (int i = 0; i > arr[i]; for (int i = 0; i
분류 전체보기
https://www.acmicpc.net/problem/1021 문제큐의 크기 N(1 풀이리스트로 iter값 이동시키며, 직접 수를 뽑아낸다. 이때 인덱스 처리 순서와 반환 값에 주의한다.#include #include using namespace std;int n, m, x, cnt = 0;listl;list::iterator iter;int main() { cin >> n >> m; for (int i = 1; i > x; if (l.size() == 1) break; list::iterator iterL = iter; int cntL = 0; while (*iterL != x) { if (iterL == l.begin()) iterL = l.end(); iterL--; cntL..

https://www.acmicpc.net/problem/1673문제풀이+ 유의사항 : 쿠폰을 도장으로 나눈 후 (서비스(추가) 치킨) 사용되지 않은 나머지 쿠폰을 고려해야 함.(이를 반복문에 넣어(나머지. %) 남은 치킨도 계산에 쓰이게 할 것) 1. 입력한 만큼 출력해주는 while True 문 삽입2. total 과 stamps 변수 설정 (n으로 함.)3. 도장의 개수가 k보다 크거나 같은 경우 계속 반복한다.3 - 1. 추가 치킨은 도장의 개수를 k로 나눈 몫이다.3 - 2. 총 치킨의 수는 ((이전 치킨의 수) + (추가 치킨의 수))이다. (값을 계속 갱신)3 - 3. 도장의 수는 (이전 도장의 수 를 k로 나눈 나머지 + (추가 치킨))의 수이다. (갱신) 4. 출력소스코드while Tru..

https://www.acmicpc.net/problem/2828문제풀이-바구니의 왼쪽과 오른쪽을 따로 생각하여 움직이도록 한다. 오른쪽 보다 숫자가 크다면 움직이고, 왼쪽보다 작으면 움직이는 식으로 최소한의 움직임을 지정한다.코드n, m = map(int, input().split())j = int(input())s = 0 #누적 움직임l = 1 #왼쪽 좌표r = m #오른쪽 좌표for i in range(j): a = int(input()) #사과 위치 if a > r: #오른쪽보다 클 때 s += a - r r = a l = a - m + 1 elif a
문제https://www.acmicpc.net/problem/14935함수 F(x)는 입력으로 주어진 수 x의 첫 자리와 수 x의 자리수를 곱한 결과를 반환하는 함수이다.예를 들어 x = 932 일때 F(x)는 9×3으로 27을 반환한다.입력받은 x에 대해서 함수 F를 수행하고, 나온 결과값에 다시 함수 F를 수행하는 것을 반복한다. 계속 반복해서 수행했을 때 어느 시점에서부터 동일한 수가 나오는 경우, 입력 x를 FA수 라고 한다.입력 x가 주어졌을때 이 수가 FA 수인지 출력하라.입력정수 x 가 주어진다. (0 ≤ x ≤ 10^100)출력정수 x가 FA수 라면 FA를 출력하고, 아니라면 NFA를 출력한다.풀이이번에는 조금 독특한 방식으로 문제를 접근해보겠습니다.함수F(x)의 반복적 적용이 항상 일정한..

https://www.acmicpc.net/problem/14503문제입력출력코드#include #include using namespace std;int N, M;vector> room;vector> cleaned;int directions[4][2] = { {-1, 0}, {0, 1}, {1, 0}, {0, -1} }; // 북, 동, 남, 서int turnLeft(int d) { return (d + 3) % 4;}int simulate(int r, int c, int d) { int cleanedCount = 0; while (true) { if (!cleaned[r][c]) { cleaned[r][c] = true; clean..

https://www.acmicpc.net/problem/14465 풀이import sysdef light(array): left, right = 0, 1 broken = [0] * N for i in array: broken[i - 1] = 1 current_broken = sum(broken[:K]) Min = current_broken for i in range(K, N): current_broken += broken[i] - broken[i - K] if current_broken

https://www.acmicpc.net/problem/3059풀이알파벳을 나열한 리스트를 생성n만큼 반복하여 set화 하여 문자열을 입력받음리스트화 후 전체 알파벳의 아스키코드 합인 2015에서 해당 문자열에 해당하는 알파벳의 아스키코드만큼 뺀코드

https://www.acmicpc.net/problem/7795import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int T = Integer.parseInt(br.readLine()); for (int t = 0; t A와 B를..

https://www.acmicpc.net/problem/5218문제풀이t = int(input())for i in range(t): a, b = input().split() ans = [] for j in range(len(a)): x = ord(a[j]) - 64 y = ord(b[j]) - 64 if y >= x: z = y - x else: z = y + 26 - x ans.append(z) print('Distances: {}'.format(' '.join(map(str, ans))))입력으로 테스트 케이스의 수를 입력 받는다. 두 개의 문자열을 입력 받는다.대응되는 문자들의 거리를 계산해서 리스트에 저장한다.

풀이#include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, S; cin >> N >> S; int A[N]; for( int i = 0; i > A[i]; // 수열 입력 int sum; int lft = 0, rgt = 0; sum = A[lft]; int result = 100000001; while(rgt S ) { result = min(result, (rgt - lft + 1)); sum -= A[lft]; ..