#include //위 아래는 각각 면적이 n*m 입니다. //n축, m축이 있다고 하면 n축에서 앞 뒤로 보는 면적과, m축에서 앞 뒤로 보는 면적을 더합니다. //n축, m축에서 면적을 셀 때는, 이전 칸(없다면 0으로 봄)보다 얼마나 더 높은지를 더해주면 됩니다. 같거나 더 낮다면, 드러난 면적이 없습니다. int main(void) { int n, m; scanf("%d %d", &n, &m); //n, m 입력 int ans[n][m]; int Ndown[m]; int Mleft[n]; for(i=0; i
#include #define M 100 class Stack { //스택 int data[M]; int top; public: Stack() : top(0) {} bool isEmpty() {return top==0;} void push(int e) {data[top++] = e;} //넣기 int pop() {return data[--top];} //빼기 int peek() {return data[top-1];} //가장 최신꺼 반환 }; int main(void) { Stack s; //스택만들기 char str[31]; //문자열 배열 scanf("%s", str); //문자열 받기 for(int i=0; str[i]!='\0'; i++) { //올바른 괄호인지 파악 if(str[i] == ']'..
#include int main(void) { char s; int U=0, D=0; for(; ~(s = getchar()) ;) { if(s == 'U' || s == 'C') U++; if(s== 'D' || s== 'P') D++; } if(U>D/2+(D&1) && D) printf("UDP"); else if(D) printf("DP"); else printf("U"); return 0; } 풀이 : 그리디 알고리즘 1. 문자열을 getchar()로 받습니다. 그다음 버퍼에서 하나씩 꺼내서 U (C 또는 U)가 몇개인지, D(D 또는 P)가 몇개인지를 계산합니다. 2. 문제의 입력은 EOF으로 끝나며, getchar에서 EOF는 -1이라는 정수값으로 s에 들어가게 됩니다. 이러한 -1을 not..
#include #include //sqrt을 사용하기 위함 int main(void) { int t; scanf("%d", &t); while(t--) { long long a, b; scanf("%lld", &a); b = sqrt(a); printf("%d ", a==b*b); //제곱수이면 1, 아니면 0을 출력 } } 풀이 : 약수의 개수가 홀수인 것은 오직 제곱수입니다. 제곱수인지를 확인하는 방법은, 정수형 타입에서 수에 제곱근을 구한뒤, 그 제곱근 한 것의 제곱이 기존의 수와 같은지를 확인하면 된다. (정수형에선 소수점 이하는 버림되기에, 제곱수가 아니라면, 제곱근의 제곱을 한 것은 기존수와 같지 않다) ex) 8의 제곱근 2*2^(1/2) 이지만 정수형이므로, 소수점 버림을 하면 2가되며 ..
import java.util.Scanner; public class Main { public static long gcd(long a, long b) { //유클리드 호제법 long r = a%b; if(r==0) return b; //나머지가 0일 경우 최대공약수를 반환 else return gcd(b, r); //몫과 나머지의 최대공약수를 찾으러 감 } public static void main(String[] args) { Scanner scan = new Scanner(System.in); long n = scan.nextLong(); long m = scan.nextLong(); long gcd = gcd(n, m); //최대공약수 구하기 System.out.print(n*m/gcd); //최..
#include typedef struct Node {//최솟값과 최댓값을 담을 노드를 만들었습니다. int max; int min; }Node; Node a[100001]; //요소를 입력받을 Node 배열입니다. Node tree[400001]; //트리를 구성할 배열입니다. Node limit = {0, 1000000001}; Node minMax(Node x, Node y) { //두개의 Node형 변수를 비교하여, 최댓값과, 최솟값을 구합니다. Node res; res.max = (x.max > y.max) ? x.max : y.max; res.min = (x.min < y.min) ? x.min : y.min; return res; } Node init(int start, int end, in..
- Total
- Today
- Yesterday
- 백준
- DP
- 세그먼트 트리
- 오프라인 쿼리
- BFS
- 누적합
- 16120번
- Mo.s
- 6198
- 최소 스패닝 트리
- 최대공약수
- DFS
- 정렬
- C언어
- 덱
- 6198번
- 그리디
- 플로이드
- C++
- 1835
- 그래프
- Krustal
- find
- 카드
- java
- 스택
- union
- 트리
- 1835번
- 누적 합
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |