The Way

5월 11일 백준 본문

PS/백준 온라인 저지

5월 11일 백준

Jeonggyun 2018. 5. 12. 01:36

* 코드는 맨 아래에 있습니다


하루에 7시간씩 문제풀기를 한다. 상당히 벅차다.

재밌는건 7시간동안 계속 풀어도 질리지 않는다는 것이다. 코딩은 나랑 정말 잘 맞는다.

재능..도 있다고 나름 생각했는데 나보다 위에 있는 사람들을 볼 때마다 확실히 아니라는 걸 느낀다.

뛰는 놈 위에 나는 놈 있다고나 할까ㅠㅠ

항상 그들을 동경하면서, 따라잡으려고 악착같이 노력할 것이다.



# 백준 1012번: 유기농 배추

단순 탐색 문제



# 백준 1057번: 토너먼트

규칙을 조금만 생각해보면 쉽게 풀린다.

1, 2, 3...번보다는 1씩 내려서 0, 1, 2...로 해야 편할 것이다.

참고로 둘이 대결하지 않는 경우는 당연히 없다.



# 백준 1018번: 체스판 다시 칠하기

단순 비교가 개꿀이다.

최대 크기 50이라 42*42*64 = 112896밖에 안된다.

나는 비트마스크를 연습 겸 써봤는데, 코드만 길어지고 약간 까다롭긴 하다.

그래도 크기가 커지면 비트마스크가 미묘하게 더 빠르지 않을까..



# 백준 1051번: 숫자 정사각형

단순 브루트 포스 문제



# 백준 1068번: 트리

노드를 제거할 때, 만약 해당 노드가 유일한 자식이라면 부모 노드가 리프로 변한다는 점에 유의하자.



# 백준 1049번: 기타줄

생략



# 백준 1015번: 수열 정렬

stable_sort를 사용하는 문제이다.


* 특정 struct를 원하는 기준으로 정렬하고 싶을 때

struct s { int a, b; };
s arr[20];
bool comp(s a, s b) { return a.a < b.a; }
sort(arr, arr + 20, comp);

comp 부분에 call by reference를 사용하면 컴파일 오류가 나는데 왜 그런지 잘 모르겠다.

즉, bool comp(s& a, s& b) { return a.a < b.a; } 이런 식으로 쓰면 안 된다는 것.



# 백준 1182번: 부분집합의 합

단순 브루트 포스 문제. 재귀를 쓰면 코드가 편하다.



# 백준 1197번: 최소 스패닝 트리

굉장히 유명한 알고리즘 문제인 최소 스패닝 트리이다.

크루스칼 알고리즘과 프림 알고리즘이 있는데, 크루스칼이 더 간편해보여서 크루스칼로 썼다.

나중에 정리해서 게시글 하나 써야겠다.



# 백준 1120번: 문자열

붙이는 것은 결국 B랑 똑같도록 붙이면 되기 때문에,

결국 A랑 B랑 제일 조금 다른 부분을 찾고, 얼마나 차이나는지를 구하는 문제



# 백준 1212번: 8진수 2진수

수의 길이가 30만이 넘는다는 점에 유의. 8진수라서 당연히 맨 처음만 신경쓰고, 각 자릿수를 이진수로 바꾸면 된다.



# 백준 1238번: 파티

오늘의 하이라이트 문제.

다익스트라 알고리즘이 드디어 나왔다. 알고리즘 시간에 배운 거라 너무 반가웠는데 하나도 기억이 안나서 내 머리가 돌임을 다시 입증한 듯 하다.

다른 곳에서 출발->A로 가는 거를 어떻게 구하냐고 물을 수 있겠는데, 화살표를 반대로 하면 A에서 출발하는 것과 동일해진다.

내가 공부하는 책에서 다익스트라 알고리즘을 잘 구현해놓아서 따라했다. 아예 달달 외워버려야겠다.



# 백준 1261번: 알고스팟

처음엔 단순 DP 문제인 줄 알고 코딩을 했는데, 다 풀고보니 세상에.. 거꾸로 갈 수가 있다.

당연히 탐색이겠거니 하고 풀어나갔다. 당연히 처음 접근할 수 있는 곳은 횟수 0, 그 다음은 1, ...의 방식

접근 횟수를 줄여나가기 위해 상당히 깔끔한 방법을 썼다. status에 depth값을 저장해서 depth번 탐색에서는 한 번만 접근할 수 있고, 그 다음에는 다시 접근하도록 만들었다.

다 풀고보니 다익스트라 알고리즘이라고 한다. (나는 원래 다 풀고 나서 알고리즘 분류를 본다)

왜 그런지 아직은 잘 이해가 안된다. 내일 자고 일어나서 생각해봐야겠다.




'PS > 백준 온라인 저지' 카테고리의 다른 글

5월 13일 백준  (0) 2018.05.15
5월 12일 백준  (0) 2018.05.13
백준 이전에 푼 것 1  (0) 2018.05.11
5월 10일 백준  (0) 2018.05.11
5월 2일 백준  (0) 2018.05.03
Comments