The Way

5월 17일 백준 본문

PS/백준 온라인 저지

5월 17일 백준

Jeonggyun 2018. 5. 18. 00:57

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


울 학교 학생분께 ACM-ICPC 같이 나가자고 연락이 왔다

나랑 같은 휴학생이고 되게 열심히하실 것 같고 성격도 완전 천사같다

앞으로 더 열심히 해야겠다



# 백준 10799번: 쇠막대기

간단한 스택 문제. 스택에 막대 n개가 쌓여 있을 때 레이저가 자르면 n개의 조각이 더 생긴다.



# 백준 1406번: 에디터

특이하게 list를 사용하는 문제이다.

list에서 insert와 erase할 때 iterator 위치가 약간 헷갈릴 수 있으니 주의



# 백준 10820번: 문자열 분석

맨 마지막줄이 엔터가 있는지 없는지 참 아리까리하다..

이것 때문에 틀림 ㅠ



# 백준 11655번: ROT13

뭐... 엄청 많이 접해봤을법한 카이사르 암호이다.

오버플로우가 일어날 수 있으니 편하게 unsigned를 붙이자.



# 백준 10824번: 네 수

생각보다 약간 헤맸다. char을 저장해 그대로 처리해줬는데,

자리수가 다를 경우나 받아올림 등 신경써줄 게 상당히 많았다.

stack까지 가져다 쓰며 고생했다..

생각해보니까 두 개 붙여도 long long 범위라서 그냥 해도 됐을텐데 왜 그랬을까..

코드를 새로 짰다 그래서.



# 백준 11656번: 접미사 배열

문자열 처리 + 사전순 -> set<string>



# 백준 9613번: GCD 합

# 백준 2745번: 진법 변환

# 백준 11005번: 진법 변환 2

# 백준 11576: Base Conversion

생략



# 백준 15719번: 중복된 숫자

비트마스크를 사용하면 손쉽게 풀 수 있다.

그런데 XOR을 이용하는 정말 참신한 방법이 있다. 감동받음...



# 백준 2089번: -2진수

많이 복잡한 문제이다.

내가 사용한 알고리즘은,

수가 음수이면 1010...10(2k개)이 수보다 같거나 작아질 때까지 k를 증가시킨 뒤 뒤쪽 1은 다 버리고 1000..00을 더해주고,

수가 양수이면 10101..01(2k + 1개)이 수보다 같거나 커질 때까지 k를 증가시킨 뒤 뒤쪽 1은 다 버리고 100..00을 빼주었다.

말로 표현하기가 참 힘든데, 예시인 -13은 다음과 같은 과정을 거친다.


-13 (101010 = -42가 더 작으므로 -13 + 100000 = 19)

19 (10101 = 21이 더 크므로 19 - 10000 = 3)

3 (101 = 5가 더 크므로 3 - 100 = -1)

-1 (10 = -2가 더 작으므로 -1 + 10 = 1)

1 (1 = 1이랑 같으므로 1 - 1 = 0)

지금까지 사용한 수를 모두 or 해줌 (100000, 10000, 100, 10, 1) -> 110111이 답


0은 따로 예외처리를 해주어야 한다.



# 백준 6588번: 골드바흐의 추측

에라토스테네스의 체를 이용해서 미리 소수 전처리를 해놓고, 소수를 찾아주자.

골드바흐의 추측은 아직 반례가 나오지 않았으므로 굳이 예외처리를 하지 않아도 된다.



# 백준 11653번: 소인수분해

평범한 소인수분해 문제이다.

1이 입력일 때는 1을 출력하는 게 아니라 아무것도 출력하지 않아야 한다.



# 백준 2004번: 조합 0의 개수

항상 overflow에 유의



# 백준 1991번: 트리 순회

노드 이름이 char이라 저장하는 데 map을 사용했다.



# 백준 11725번: 트리의 부모 찾기

사실 dfs 문제이다. 트리에서 dfs를 많이 쓴다.




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

1월 2일 백준 (14502, 1735, 10026, 14888)  (0) 2019.01.02
5월 18일 백준  (1) 2018.05.19
5월 16일 백준  (0) 2018.05.16
5월 15일 백준  (0) 2018.05.15
5월 13일 백준  (0) 2018.05.15
Comments