BOJ

    [백준 | BOJ] Good Bye, BOJ 2021! 후기 및 풀이 (ABCD)

    백준에서는 연말에 굿바이 백준, 연초에 헬로 백준(굿모닝 백준) 행사가 있다. 2021 백준 마무리할 겸 문제풀이. 대회에서는 2솔브, 끝나고 CD 업솔빙까지 했다. A. 2021은 무엇이 특별할까? $N$ 범위가 $10,000$이다. 소수를 쭉 늘어놓고, 두개를 미리 곱해두고 이분탐색해서 풀었다. 사실 이분탐색은 필요가 없는데. 원소 개수가 30개가 안 된다. 배열을 한 바퀴 돌 걸. $N = 10,000$일 때 103까지 넣어둬야 하는데, 넣지 않아서 WA, 테스트한답시고 넣은 코드를 안 없애서 WA. 자잘한 실수를 많이 했다. 제출 전에는 꼭 체크하자. B. 예쁜 케이크 대회 중에는 OEIS의 힘을 받아서 풀었다. 손으로 줄줄 쓰다가 뭔가 규칙이 있는 것 같아서 넘겼다. 증명은 아래와 같다. $N ..

    [백준 | BOJ] 가희와 함께 하는 2회 코딩 테스트 후기

    저번에 재밌게 풀었던 시리즈 대회가 열렸다. 1회때와 같이 문제들이 재밌다. 처음 생각한 풀이와는 다르게 생각하는 문제들도 있었다. 1시부터 바짝 참여하지는 못했지만, 5문제를 풀었다. 풀이는 아래. 가희와 함께 하는 2회 코딩 테스트 www.acmicpc.net 1. 가희와 파일 탐색기 문자열 관련 문제를 풀 때면 파이썬밖에 못 하는 나를 조금은 이해할 수 있게 된다.. 단순 정렬 세 번으로 문제를 해결했다. 우선순위의 반대순서대로 정렬을 진행하면, 우선순위를 모두 만족하게끔 정렬할 수 있다. 파일명과 확장자로 나눠 입력받고, 지원하는 확장자들을 dict 를 통해 관리한 뒤, key 를 각각 확장자, 지원 여부, 파일명 순서대로 정렬을 세 번 한다. 2. 가희와 키워드 이 문제도 브루트포스로 해결했다...

    [백준 | BOJ] 가희와 함께 하는 1회 코딩 테스트 후기

    요즘 백준에서 문제를 좀 풀고 있다. 어려운 고급알고리즘보다는 대회나 코딩테스트에서 자주 보이는 알고리즘 위주로 연습하려고 한다. Codeforces의 Round나, 백준의 대회나, Atcoder의 Contest 모두 참 좋지만, 신분이 군인인지라 쉽게 응시하지 못하고 있다. 가희와 함께 하는 1회 코딩 테스트 www.acmicpc.net 오늘 괜찮은 시간대에 대회가 열려서 참가하게 됐다. 문제들은 재밌었고, 다양한 알고리즘들이 문제셋에 녹아있어서 이렇게저렇게 풀어보기도 했다. 공지사항에서 미리 "빠른 입출력"을 사용하라고 조언했었는데, 꽤 테스트케이스들이 무거운 모양이다. 파이썬으로 힘겹게 돌아갔다. 저번 숙명여대 SMUPC에서는 2문제만 풀고 대회를 마무리했었는데, 이번 대회에서는 8문제 중에서 6문..

    [파이썬 | Python] 트라이 (Trie) 자료구조

    문자열은 항상 어렵다. KMP도 그렇고, digit으로 정렬하는 것도 그렇고, 알면 알수록 머리아파지는 분야. 그만큼 어렵게 만들면 훨씬 어렵게도 만들 수 있다는 이야기겠지. 오늘은 트라이를 공부했다. Radix tree / Prefix tree 라고도 불리는데, 한 단어의 접두사(접두어)를 모두 저장하고 있다. (해당 단어에 도달하기까지의 문자들을 저장한다) donghoon 이라는 단어를 보면, dong 도 접두사가 될 수 있고, do 도 접두사가 될 수 있다. 트라이에서는 이 단어들이 서로 포함관계에 있다는 것을 알려준다. 트라이에 "app", "ant", "apple"이라는 단어들을 저장한다고 하자. 트라이에는 지금까지의 모든 단어의 자취를 저장한다고 했다. 단어의 각 글자마다, 존재하지 않으면 새..

    [백준 | BOJ] 숙명여자대학교 SMUPC 풀어보기

    13시부터 17시까지 4시간짜리 오픈콘테스트가 열렸는데, 다른 문제 푸느라 30분동안밖에 못 풀었다. 오늘 돼서 아침에 문제 훑어보고 풀이. 무난하고 재밌었던 문제셋이지만, 한 쪽에 치우쳐진 알고리즘 셋이라는 점이 아쉽다. 제1회 숙명여자대학교 교내 알고리즘 경진대회 (SMUPC) Open www.acmicpc.net 21734: SMUPC의 등장 각 알파벳의 아스키 코드를 구한 뒤에, 각 자리수를 더한 만큼 알파벳을 출력하면 된다. for i in input(): print(i * sum(list(map(int, list(str(ord(i))))))) 21735: 눈덩이 굴리기 dp로 풀다가 시간까지 저장을 어떻게 하지,, 라는 생각에 대회날에는 넘기고 아침에 다시 보니 dfs로 파고내려가면 됐던 문제..