Koala - 15기/코딩테스트 준비 스터디

문제 & 링크https://www.acmicpc.net/problem/1107 풀이1. 리모컨은 0 - 9까지 10개의 버튼을 가지고 있기에 길이가 10인 bool 자료형의 배열을 만들고, 입력받은 버튼을 true로 설정한다.2. 현재 채널이 100이기에 +, - 버튼만으로 원하는 채널에 도달할 때 누르는 횟수를 저장한다. 이때 음수값을 가질 수도 있으니 abs() 함수를 이용하여 양수로 저장한다.3. 이동하고자 하는 채널이 최대 500,000번 이기에 1,000,000번 채널에서 - 버튼을 누르는 경우도 생각하여 반복문을 수행한다.4. 해당 채널의 번호가 부서진 버튼을 포함하고 있는지 check 함수를 통해 확인한다. 이때 채널 번호를 string 형태로 바꾸고 한 글자 단위로 확인한다.5. 만약 채널..
10773번: 제로 (acmicpc.net)a= int(input())x=[]s=0for i in range(a): t=int(input()) if t!=0: x.append(t) else: x.pop()for i in range(len(x)): s+=x[i]print(s)가장 간단한 스택 문제이다. 입력받은 t가 0이 아니라면 스택에 쌓아주고 0이면 가장 최근 걸 pop() 해준다.
문제https://www.acmicpc.net/problem/1012코드#include #include #include using namespace std;int arr[51][51];bool visited[51][51];int m, n, k;void dfs(int a, int b) { // 방향 벡터 정의 (상하좌우) int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; visited[a][b] = true; for (int i = 0; i = 0 && nx = 0 && ny > t; while (t--) { memset(arr, 0, sizeof(arr)); memset(visited..
https://www.acmicpc.net/problem/15903문제석환이는 아기다. 아기 석환이는 자연수가 쓰여져있는 카드를 갖고 다양한 놀이를 하며 노는 것을 좋아한다. 오늘 아기 석환이는 무슨 놀이를 하고 있을까? 바로 카드 합체 놀이이다!아기 석환이는 자연수가 쓰여진 카드를 n장 갖고 있다. 처음에 i번 카드엔 ai가 쓰여있다. 카드 합체 놀이는 이 카드들을 합체하며 노는 놀이이다. 카드 합체는 다음과 같은 과정으로 이루어진다.x번 카드와 y번 카드를 골라 그 두 장에 쓰여진 수를 더한 값을 계산한다. (x ≠ y)계산한 값을 x번 카드와 y번 카드 두 장 모두에 덮어 쓴다.이 카드 합체를 총 m번 하면 놀이가 끝난다. m번의 합체를 모두 끝낸 뒤, n장의 카드에 쓰여있는 수를 모두 더한 값이 ..
풀이#include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin.tie(NULL); int N; cin >> N; deque> dq; for( int i = 1; i > dq_num; dq.push_back(make_pair(i, dq_num)); } cout 0 ) { tmp--; for( int i = 0; i tmp; --i ) { dq.push_front(dq.back()); dq.pop_back(); ..
- 문제https://www.acmicpc.net/problem/14235- 알고리즘입력으로 0이 들어온 곳에서는 현재 가지고 있는 선물중에 가치가 가장 높은 선물을 주고, 줄 선물이 없다면 -1을 출력하면 되는 문제이다.이때, 현재 가지고 있는 선물중에 가치가 높은 선물을 선별하기 위해 우선순위 큐를 사용하였다. 파이썬에 내장되어있는 module을 가져왔고, 이 모듈에서 get을 할때 가장 낮은 숫자부터 get을 해주기 때문에, 선물의 가치에 -1을 곱하여 음수로 표현한 뒤 넣어주었다. 이렇게 하면 절댓값이 가장 높은 수부터 get이 되고, 나중에 출력할때 -1을 곱해서 출력하도록 구성하였다.이 문제에서 입력에 0 or a+1만큼의 숫자들로 입력이 진행되기 때문에, 리스트로 받아서 리스트의 첫번째 원소..
https://www.acmicpc.net/problem/11660DP를 이용해 푼 문제이다.  2차원 배열 arr은 문제에서 주어진 입력으로 만든 2차원 배열이고 배열 dp는 행별로 누적합을 구한 배열로 설정한다.그런다음, 행별로 누적합을 구한다. (dp[3][4]는 arr [3][1]부터 arr [3][4]까지 더한 것)  import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringT..
https://www.acmicpc.net/problem/2110문제도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.입력첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주..
19637번: IF문 좀 대신 써줘 (acmicpc.net)단순 구현 -> 시간 초과이진 탐색 코드로 제출 -> 시간 초과뭐가 문젠가 했더니 입력받는 코드를 바꿔줬더니 통과됨# 반복문으로 여러 번 입력받을 시 input() 대신 sys,stdin.readline()을 꼭 쓰자# 각 캐릭터의 칭호를 찾을 때 이진 탐색import sysinput = sys.stdin.readlinen,m=map(int,input().split())level = []for _ in range(n): a, b = list(input().split()) level.append((a, int(b)))def ubound(x): left = 0 right = n-1 while left
https://www.acmicpc.net/problem/16401문제명절이 되면, 홍익이 집에는 조카들이 놀러 온다. 떼를 쓰는 조카들을 달래기 위해 홍익이는 막대 과자를 하나씩 나눠준다.조카들이 과자를 먹는 동안은 떼를 쓰지 않기 때문에, 홍익이는 조카들에게 최대한 긴 과자를 나눠주려고 한다.그런데 나눠준 과자의 길이가 하나라도 다르면 조카끼리 싸움이 일어난다. 따라서 반드시 모든 조카에게 같은 길이의 막대 과자를 나눠주어야 한다.M명의 조카가 있고 N개의 과자가 있을 때, 조카 1명에게 줄 수 있는 막대 과자의 최대 길이를 구하라.단, 막대 과자는 길이와 상관없이 여러 조각으로 나눠질 수 있지만, 과자를 하나로 합칠 수는 없다. 단, 막대 과자의 길이는 양의 정수여야 한다. 입력첫째 줄에 조카의 수..
문제https://www.acmicpc.net/problem/27496Algorithm누적합을 이용하여 현재 알코올 농도를 구한다. 이때, 알코올이 지속되는 시간을 고려해야한다. 예제 입력 1을 보면 알코올의 지속시간이 3이므로, 첫번째 술은 3시간까지 적용 후 4번째 시간이후부터는 사라지도록 코드를 구성한다.문제에서 혈중 알코올 농도는 0.001을 곱하여 계산한다고 되어있는데, 이는 부동소수점 문제가 나타난다.해당 사진은 값을 임의로 넣었을때 prefix배열의 출력이다. 우리가 원하는 소수점 3번째 자리까지의 값이 반영이 안되어 있기 때문에, 0.001을 곱하지 않고 정수 그대로 계산한 후에, 해당 시간의 혈중 알코올 농도가 129 ~ 138 사이에 있는지 확인하는 방식으로 바꾸었다. Codeinput..
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
KauKoala
'Koala - 15기/코딩테스트 준비 스터디' 카테고리의 글 목록 (3 Page)