본문 바로가기

Tech/Coding52

백준9465🐨스티커🚀동적프로그래밍 문제상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다.상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다.모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점수를 매기고, 점수의 합이 최대가 되게 스티커를 떼어내려고 한다. 먼저, 그림 (b)와 같이 각 스티커에 점수를 매겼다. 상냥이가 뗄 수 있는 스티커의 점수의 최댓값을 구하는 프로그램을 작성하시오. 즉, 2n개의 스티커 중에서 점수의 합이 최대가 되면서 서로 .. 2024. 12. 25.
백준18005🐨Even or Odd? https://www.acmicpc.net/problem/18005문제의 주요 조건을 살펴보자.picked n consecutive positive integers between 1 and 1018 guess if their sum is even or oddIf the sum must be even, write 2.If the sum must be odd, write 1.If the sum could be even or could be odd, write 0.The single line of input contains a single integer n (1 ≤ n ≤ 109). 일련의 $n$개 수의 합이 홀수가 되거나 짝수가 되는 것은홀수로 시작하는지 짝수로 시작하는지가 영향을 줄 것이다.홀수로 시작하는.. 2024. 8. 6.
🚧Intro2Algo🐨22장.기본 그래프 알고리즘 (01)그래프의 표현 $$G = (V, E)$$의미G (Graph): 그래프 자체, 정점들과 그 정점들을 연결하는 간선들의 집합.V (Vertices): 정점 집합. Vertex의 복수형으로, 그래프의 각 노드 또는 점.E (Edges): 간선 집합. 정점들을 연결하는 선.$G = (V, E)$는 "그래프 G는 정점들의 집합 V와 간선들의 집합 E로 구성된다"는 것을 수학적으로 표현한 것.그래프 $G = (V, E)$를 표현하기 위해서는 두 가지 표준 방법이 있음.1. 인접 리스트의 집합- 작은 밀도($|E|가|V|^2$보다 훨씬 작음) 그래프에 대해 효율적(Sparse Graph $|E| \ll |V|^2$ 조건을 만족)2. 인접 행렬두 방법 모두 무방향 그래프에 적용할 수 있다.무방향 그래프 정점5개 간선 7개인접 리스트.. 2024. 8. 6.
파이썬🐨더욱 더 로우레벨한 입출력 import osarr = list(map(int, os.read(0, os.fstat(0).st_size).split()))is_hacker = any((((i // 2) + 1) * 100)  제시된 코드는 os.read와 os.fstat를 사용하여 표준 입력으로부터 데이터를 읽고 처리하는 방식으로 작성된 코드이다. 이 코드의 동작 방식과 sys.stdin, open(0), input()과의 차이점을 자세히 설명하겠다.코드 분석import os# 표준 입력으로부터 데이터를 읽어온다arr = list(map(int, os.read(0, os.fstat(0).st_size).split()))# 조건에 따라 'hacker'인지 아닌지 판별is_hacker = any((((i // 2) + 1) * 100).. 2024. 7. 31.
백준3015🐨오아시스 재결합.py 백준 3015번 “오아시스 재결합” 문제는 스택을 이용하여 각 사람이 볼 수 있는 다른 사람의 쌍을 구하는 문제이다. 아래에 주어진 코드를 바탕으로 문제 풀이를 설명한다:n, *nums = map(int,open(0).read().split())stack = []result = 0for i in range(n): count = 1 while stack and stack[-1][0] 코드 설명초기화 및 입력 처리:n과 nums에 입력 데이터를 받아오고, stack과 result를 초기화한다.스택을 이용한 탐색:각 사람의 키를 nums에서 하나씩 순서대로 처리한다. 현재 사람의 키 nums[i]를 기준으로, 스택에 쌓인 이전 사람들 중 nums[i]보다 작거나 같은 키를 가진 사람들을 제거한다. .. 2024. 7. 30.
백준17298🐨오큰수.py .c + 백준17299🐨오등큰수.py https://redcubes.tistory.com/124 🐨BOJ#6549 히스토그램에서 가장 큰 직사각형] 모노톤 스택(#1725히스토그램)히스토그램에서 가장 큰 직사각형 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 54258 14782 9717 26.945% 문제 히스토그램은 직사각형 여러 개가 아래쪽으로 정렬되어 있는 도형이redcubes.tistory.com 오큰수 (NGE: Next Greater Element)오큰수: 현재 숫자 오른쪽에 위치하면서 현재 숫자보다 큰 수 중 가장 왼쪽에 있는 수.예시: 숫자 배열이 [9, 5, 4, 8]일 때 각 숫자의 오큰수는 다음과 같다:9: 오른쪽에 더 큰 수가 없으므로 -15: 오른쪽에 있는 8이 오큰수4: 오른쪽에 있는.. 2024. 7. 28.
백준11320🐨삼각 무늬 - 1 .C https://www.acmicpc.net/problem/11320 #include #include int main() { int t; scanf("%d", &t); int *ab = (int *)malloc(t  코드 설명헤더 파일 포함#include #include 표준 입출력 함수와 동적 메모리 할당 함수를 사용하기 위해 stdio.h와 stdlib.h를 포함한다.메인 함수int main() {모든 C 프로그램의 시작점인 main 함수이다.변수 선언 및 입력 int t; scanf("%d", &t);테스트 케이스의 수를 저장할 변수 t를 선언하고 표준 입력을 통해 그 값을 읽어온다.동적 메모리 할당 int *ab = (int *)malloc(t 입력된 수를 저.. 2024. 7. 27.
백준2293🐨동전 1 https://www.acmicpc.net/problem/2293 아래 동영상의 도움으로 문제를 풀었습니다! https://www.youtube.com/watch?v=LBOQikSpfNg1, 2, 5 로 10 만들기 0123456789101111111111112112233445565112234567810$dp[i][j]$ $i$번째 동전 추가시 j원을 만드는 경우의 수$$ $dp[i][j] = dp[i-1][j] +  dp[i][j-coin]$$dp[0] =10원을 만드는 경우의 수는 1 (아무것도 안 쓴다.)for coin in lst:    for j in range(coin,k+1):        dp[j] += dp[j-coin]def calculate_budget(coin_type_count, .. 2024. 7. 21.
백준4158🐨CD - 집념의 이터레이션 feat. map은 메모리를 먹는다. https://www.acmicpc.net/problem/4158 테스트 케이스가 여러개인데 하나라고 착각하고 이상하게 짰습니다.(문제 잘 안 읽는다고 아이들에게 주의 주는데... 반성합니다.)n,m,*nums = map(int,open(0).read().split())print(len(set(nums[:m])&set(nums[m:-2])))그래서 예전에 성공한 코드를 보았습니다.from sys import stdini = 0data = stdin.readlines()while True: m, n = map(int, data[i].split()) if m == 0 and n == 0: break else: i+=1 print(len(set(data[i.. 2024. 7. 18.
백준20361🐨일우는 야바위꾼.py _,x,k,*shupples = open(0).read().split()k=int(k)for i in range(0,k 2024. 7. 18.
AtCoder🐨Beginner Contest 362 - C. Sum = 0 L_i와  R_i 범위에서 X_i를 선택해서 수열을 만들고 합을 0으로 만드는 문제다.처음엔 만들수 있나? 만 물어보는 줄 알았는데.. 그래서 쉽다고 생각했다만들 수 있으려면 L의 합들과 R의 합들 범위에 0이 있어야 한다.그런데 실제 조건을 만족하는 수열 X를 구해야 했다.L의 합으로 X를 정해두고 그리디하게 0이 될 때 까지 최대한 더해주면 된다고 생각했다.n, *lr = map(int, open(0).read().split())sum_l, sum_r = 0, 0res = []diff = []for i in range(0, n정말 잘 풀었는데 50여개 케이스 중 3개가 통과하지 않는 거다...느낌상 경과의 원소가 하나뿐인 경우가 아닌가 해서 계속 예외처리를 하다가 풀지 못했다.에디토리얼을 보고 나랑 .. 2024. 7. 14.
C언어 고급] 13🚀변수의 영역과 데이터 공유 목차 변수의 사용 영역 지역변수 = 자동 변수 - 함수 내 사용. auto (=생략 가능). local variable은 storage class (변수를 사용 범위와 존재 기간에 따라 나눈 것) 중 하나. 지역변수의 특징 다른 함수에서 사용 못함 이름이 같아도 선언된 함수가 다르면 각각 독립된 저장 공간을 가짐 장점 메모리 효율성 디버깅에 유리 블록 안에서 사용하는 지역 변수 특정 블록 안에 변수를 선언하면 범위가 블록 내부로 제한. 블록이 중첩된 경우 사용 가능한 변수가 둘 이상이면 가장 가까운 블록에 선언된 변수를 사용. (안팎에 다 있으면 안의 것을 사용.) #include void assign10(void); void assign20(void); int a; // 전역 변수 선언 int main.. 2024. 4. 4.