전체 글 20

[BOJ] 5854 Painting the Fence

https://www.acmicpc.net/problem/5854 n, k가 입력으로 주어지고 n개의 줄에 거리와 방향(L, R)이 주어진다. 1차원 수직선 상에서 주어진 입력 순서대로 좌우로 이동할 때 k번 이상 지나간 구간의 총 길이를 구하면 된다. 사용한 알고리즘 : 누적합n 제한을 보니 우리는 O(n)에 해결해야만 할 것 같다.왼쪽으로 이동하던지, 오른쪽으로 이동하던지 방향과는 상관없이 그 구간의 시작과 끝이 항상 존재한다. 시작과 끝을 구해놓고, 시작 인덱스에 + 1, 끝 인덱스에 -1을 해준다.모든 구간을 정렬(O(nlogn))하고, IMOS 법을 적용해주면 O(n)에 해당 구간이 몇 번 칠해졌는지 알 수 있다. 현재 누적된 값이 k 이상이라면 정답에 해당 구간의 길이를 더해준다. #incl..

PS/문제풀이 2025.08.13

[BOJ] 5851 Cow Lineup

https://www.acmicpc.net/problem/5851N 개의 중복한 ID가 줄 지어 있을 때 최대 K개 종류의 ID를 제거하여 연속할 수 있는 같은 ID의 최대 길이를 구하는 것이 문제이다. 최대 K 종류를 제거 할 수 있고, 연속한 것 중 같은 ID의 최대 길이를 구하자."연속"하기 위해서는 시작과 끝을 정하고 범위 안에 있는 ID 중 다른 종류의 개수가 K + 1개 이하이면 우리는 어떤 한 ID를 연속하게 만들 수 있다. 그러기 위해서 우리는 두 포인터 알고리즘과 map 자료구조를 사용하여 시작을 l, 끝을 r로 정의하고 r 범위를 새로 볼 때마다 추가된 ID를 map으로 관리하여 고유한 ID 개수를 세준다. 만약 ID 종류가 K + 1 초과라면 l 부터 다시 조건을 만족할 때까지 I..

PS/문제풀이 2025.08.13

BOJ 17302 흰색으로 만들기

https://www.acmicpc.net/problem/17302 세 가지 연산을 할 수 있다.2, 3 번의 연산에 집중을 해보자.모든 인접한 칸의 색을 바꾸는데 3번은 자기 자신도 바꿀 수 있다. 그렇다면 이 3번의 연산을 마지막에 적용시켜 보면 어떨까 라는 생각을 해보자.모든 칸에 2번 연산을 적용하고 만약 지금 보고 있는 칸이 검정이라면 2->3 번 연산을 통해 자기 자신의 색을 반전시키면 모든 칸의 색을 흰색으로 바꿀 수 있다. 증명은 따로 못 하겠다... 애드 혹은 어렵다.. #include using namespace std;using ll = long long;#define all(v) v.begin(), v.end()ll n, a, b, c, t, k, m;string str;cha..

PS/문제풀이 2025.08.06

눈치

눈치가 빠르다는 것, 눈치가 좋다는 것은 칭찬이다. 다른 사람에게 이런 소리를 듣는 것은 기분 좋은 일이다. 최근 들어 갑자기 눈치가 빠르다는 것이 과연 좋은 것일까라는 고민을 했다. 눈치가 빠르다는 것은 쉽게 말하면 주변 분위기를 잘 살피는 것으로 해석할 수 있다. 이 능력은 인생을 살아감에 있어 꼭 필요한 능력이다. 자, 그럼 생각을 전환해보자. 주변 분위기를 잘 살핀다는 건 결국 평소에 주변 눈치를 많이 본다거나 주변에 관심이 많다는 소리이다. 문득, 어쩌면 이 부분이 살면서 피곤할 수도 있겠다는 생각을 했다. 눈치가 빠르다는 게 나쁘다는 것이 아니라 뭐든 적당한게 좋다. 나는 지금까지 살아오면서 눈치가 빠르다는 소리를 많이 듣곤 했다. 실제로도 주변 눈치를 많이 보는 성격이다. 그래도 평소에 그렇..

이야기 2022.04.18

3/31 PS 일지

오늘은 div3가 있는 날이다. 오늘은 민트를 갈 수 있을까? 드디어 천안에서 서울로 돌아왔다. 나는 어릴 때부터 기차를 좋아했다. 그래서 무궁화호나 KTX가 지나갈 때 정말 재미있다. 하지만 대전이던 천안이던 집에서 버스터미널까지 거리가 더 가까워서 버스를 주로 탄다. 많이 아쉽다. 버스를 타고 오다보니 세상 사는게 참 좋아졌다고 느낀다. 내가 오고가는 길은 모두 평지였던 날이 있었으니... 그렇게 먼길을 거쳐 오랜만에 랩실을 오니 책상이 많이 깨끗해져 있었고 내 짐도 어디론가 흩어져 버렸다. 하나씩 찾아가는 재미가 쏠쏠했다? 대학 동기 생일이라 동기들끼리 저녁도 같이 먹고 술도 마셨다. 술을 마시다보니 오늘 민트를 못 갈 것만 같았다. 어찌저찌 신학적 인간학 과제도 제출하고, 동기들과의 자리도 마무리..

3/30 PS 일지

오늘은 다시 서울을 가야곘다고 생각했지만 어림도 없었다. 갑자기 그런 생각이 들었다. 천안에 있으면서 많은 생각이 들었다. 서울, 아니 서강대에서의 나는 우물안 개구리였다. 랩실에서 벗어나 곰곰히 생각을 해보니 이 세상에는 할 일이 너무 많다. 사실 작년에 처음 서울에 올라갈 때만 해도 서울에 가면 많이 돌아다녀야겠다고 생각했다. 하지만 귀찮아서 학교에만 있었던 것 같다. 남들이 많이 가는 유명한 곳도 사실 가보지 못한 경우가 많다. 그냥 이런 삶이 편했다. 늘 시간에 쫓기고 있다고 생각했다. 하지만 시간은 충분했고, 나에게 제약을 건 것도 나 스스로였다. 언제나 다짐했지만 이제는 세상을 살아가는 방법을 배우고 싶다. 다양한 경험도 쌓고 곳곳을 돌아다니고 싶다. 꼭 그런게 아니더라도 분명 의미있는 경험을..

3/29 PS 일지

안녕하세요. 오랜만에 PS 일지를 쓰네요. 3월 27일에는 가족을 보러 천안에 왔습니다. 물론 지금도 천안에서 이 글을 쓰고 있습니다. 이틀 동안 나는 무엇을 했을까? 일요일에는 컴실 과제 레프트가 밀렸습니다. 거기에 자료구조 과제도 겹쳤습니다. 하지만 세상 편하게 잠들어서 밤에 일어나고는 밤을 새기로 다짐합니다. 저는 일을 계획적으로 하는 스타일도 아니고, 한 번에 집중에서 하는 스타일도 아니기에 정말 오래 걸렸습니다. 결과 보고서는 다음 날 3시 제출이었는데, 10분 전까지 수정해서 제출했습니다. 그렇게 밤을 새고 월요일이 되어 정신이 나간 저는 3시 컴실 수업을 들었습니다. 물론 수업을 들으면서 실습을 해야했지만 당연히 5시까지 제출이었던 자료구조 과제를 했습니다. 다행히 한 시간 동안 자료구조 보..

CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!)

A. Good Pairs 아래 식을 만족하려면 각 절댓값이 >=0 이면 성립한다. 따라서, ai는 배열에서 가장 큰값, aj는 가장 작은 값이면 식이 성립한다. { val, idx } 형태로 저장해 오름차순으로 정렬해서 인덱스를 구해주었다. |ai−ak|+|ak−aj|=|ai−aj| #include using namespace std; using ll = long long; int tc; int n, a, b; int main(void) { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin >> tc; while(tc--) { cin >> n; vectorv; for(int i = 0; i > a; v.push_back({ a,..

PS/코드포스 2022.03.27

3/26 PS 일지

오늘은 응용수학 과제가 있었고, Sogang ICPC 학회 회의가 있었다. PS를 할 시간이 별로 없어서 백준을 못풀었다?라고 하면 핑계인걸 나도 알기 때문에 그냥 넘어가도록 하자. 글쓰고 컴실 레포트나 써야겠다. Codeforce 코드포스 문제를 풀었다. 랩실에서 효규 형 옆에서 3문제 풀고 기숙사에 돌아와서 2문제를 풀었다. 오늘 코포 문제를 풀고 제출하면서 부족하다고 생각한 점을 정리해보자. 1) 문제를 한 번에 맞추는 빈도가 적다. (증명 없이 무지성 제출?) 2) WA일 경우에 가능한 모든 반례를 고민해보지 않고 하나를 고치면 그냥 낸다. (틀렸으면 반례를 신중하게 고민해보도록 하자.) 3) 지문 좀 제대로 읽자. (사실 영어는 무서워) 1번은 믿음으로 내는 건데 맞으면 좋은거고 틀리면 슬프다...