안녕하세요. 꼬동입니다.
https://www.acmicpc.net/problem/5676
5676번: 음주 코딩
각 테스트 케이스마다 곱셈 명령의 결과를 한 줄에 모두 출력하면 된다. 출력하는 i번째 문자는 i번째 곱셈 명령의 결과이다. 양수인 경우에는 +, 음수인 경우에는 -, 영인 경우에는 0을 출력한다.
www.acmicpc.net
오늘의 문제
음주 코딩
뭐 똑같은 세그먼트 트리 문제입니다.
세그먼트 트리가 쉬우면서, 백준 점수 따는데 제일 좋은거 같아서, 계속 찾아서 풀게되군요.
언제 다익스트라로 넘어가지 ..?
어쨌든,
이 문제는 뭔가 Python으로 안 풀릴거 같아서, C로 풀어봤습니다.
#include <stdio.h>
char o;
int N, K, tmp, i, j;
int tree[100000 * 4];
int insert(int n, int s, int e, int t, int v) {
if (t < s || e < t) return tree[n];
if (s == t && t == e) {
tree[n] = v;
return tree[n];
}
int m = (s + e) / 2;
tree[n] = insert(n * 2, s, m, t, v) * insert(n * 2 + 1, m + 1, e, t, v);
return tree[n];
}
int check(int n, int s, int e, int l, int r) {
if (r < s || e < l) return 1;
if (l <= s && e <= r) return tree[n];
int m = (s + e) / 2;
return check(n * 2, s, m, l, r) * check(n * 2 + 1, m + 1, e, l, r);
}
int main(void) {
while (scanf("%d %d", &N, &K) != EOF) {
for (int i = 0; i < 100000 * 4; ++i) tree[i] = 1;
for (int n = 1; n <= N; ++n) {
scanf("%d ", &tmp);
if (tmp < 0) tmp = -1;
else if (tmp > 0) tmp = 1;
insert(1, 1, N, n, tmp);
}
for (int k = 0; k < K; ++k) {
scanf("%c %d %d ", &o, &i, &j);
if (o == 'C') {
if (j > 0) j = 1;
else if (j < 0) j = -1;
insert(1, 1, N, i, j);
}
else {
int res = check(1, 1, N, i, j);
if (res < 0) printf("-");
else if (res > 0) printf("+");
else printf("0");
}
}
printf("\n");
}
return 0;
}
이 문제 웃긴 점은, 입력 값의 마지막이 뭔지 모르고, 주어지면 일단 로직을 돌려야한다는 이상한 문제인데,
이 부분은 EOF 처리를 하면 가능합니다.
while (scanf("%d %d", &N, &K) != EOF) {...}
원리는 뭔지 모르겠지만, EOF(End Of File)면 끝내겠다는, 그런 의미 아닐까여
좀 알아보니,
운영체제에서 파일의 끝을 탐지하는 방법은 약간씩 다른데, C 언어는 파일의 끝에 도달했을 때 언제나 특별한 값을 반환한다하더라고요.
이 값이 EOF(End Of File)이며, 실제로의 값은 -1을 나타낸다고 합니다.
윈도우에선 Ctrl + Z를 누르고 Enter를 누르면 된다고 하네요.
근데 나 맥북인뎁
제가 MBTI N이라 그런지, 항상 생각이 많은데, 이 문제를 풀면서도 생각이 참 많았습니다.
제목이 음주 코딩이다 보니 뭔가, 대학생 때, 술 먹으면서 과제했던 생각도 나고,
뭔가 정겨운 문제 같아 보여서 센치해지더라고요.
고향 방문 후 다시 상경하는 기차 안에서 풀어서 그런지, 아니면 LAST DANCE 노래 들으면서 풀어서 그런지 왤케 문제가 짠하지
낼 모레 앞 자리가 바뀌어서 그런가
흑흑
서럽네
술 먹고싶다
푸념하는거 찐따 같은데, 이왕이면 멋진 찐따가 됩시다.
이상 5676 - 음주 코딩였습니다. ^_^
'알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
2243 - 사탕상자 (0) | 2021.10.31 |
---|---|
17404 - RGB 거리 2 (2) | 2021.10.25 |
3653 - 영화 수집 (0) | 2021.10.10 |
1107 - 리모컨 (0) | 2021.10.09 |
7579 - 공장 (0) | 2021.10.09 |