Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Week20~21] BOJ Backtracking + Shortest Path - 2문제 + 2문제 완료 #79

Merged
merged 4 commits into from
Jul 26, 2023

Conversation

HyowonSin
Copy link
Contributor

@HyowonSin HyowonSin commented Jul 20, 2023

PR 늦어서 죄송합니다 ㅠ..ㅠ
푸는데 자주 막혀서 풀지를 못해서
다음 날 되고 플젝 하다가 또 밀리고 그랬네요 ㅠ
고민하느라 생각 보다 시간은 많이 썼는데
증말 안 풀리네요

제가 트리나 탐색 쪽이 많이 약해서 시작 부터 어려웠습니다
N과 M 1번은 하도 감을 못 잡아서 힌트를 봤었고
이를 토대로 나머지 문제를 풀어봤습니다.

최대한 알고리즘 기법을 찾아보지 않고 풀어보려 했는데
for 문 if 문 덕지덕지 ㅋㅋ
생각 보다 시간 초과가 나기 쉬워서 공부하고 적용하는 연습을 해봐야 겠습니다.

방향 그래프에선 set을 자주 쓰게 되었고..
재귀나 while 문에서 탈출문을 깜빡하는 경우가 잦아 시간초과도 막 나고 그랬습니다..
문자열 숫자 정렬은 항상 깜빡 하네요..

넴모넴모는 결국 못 풀었습니다..

우선순위 큐라거나 while 문 등으로
이렇게 저렇게 시도하다 못 풀고
답을 봐버렸습니다

재귀를 생각은 했었지만 잘 못 써서..
재귀가 익숙하지 않네요 ㅠㅠ

백트래킹을 검색하니 주로 재귀로 푼다고..
문제를 여럿 풀어봐야겠네요..

유형: 백트래킹
난이도: 실버 3
알고리즘이 요즘 어렵습니다 ㅠ
백트래킹은 탐색 느낌이 있는 것 같네요..
1번 문제에서 스트링으로 저장하던 방식을 가져온 탓인지
중복 가능에서 고생을 했는데요

중복이 되지만 개수 제한이 있던 터라
자기 자신의 뒤 부터 돌도록 했습니다

set으로 묶어서 출력했더니
문자열이라 9 보다 10이 앞으로 가서 계속 틀렸습니다

미리 정렬을 하고 check 용 리스트를 만들어서
if i not in check 으로 순서대로 출력하니
출력하니 중간에 시간 초과가 났고..

결국 map 을 이용하여 숫자를 정렬하고 묶는 식으로 했습니다.
sorted(set(answer), key=lambda x: list(map(int, x.split())))
이게 더 났군요..
뭔가 힘들게 풀어서 걱정이네요..

유형: 백트래킹
난이도: 실버 2
선을 따라간다는 느낌으로 set 을 이용하여 갈 수 있는 모든 점을 모아봤습니다.
엄청난 for 문으로 한번에 맞았지만 시간이 2484ms 가 나와서
탈출문을 추가했습니다 시간이 64ms 로 확 줄었네요

그냥 풀어보긴 했는데
플로이드-워셜 알고리즘 공부를 하는 것이 좋을 것 같습니다..

유형: 그래프 이론, 그래프 탐색, 플로이드-워셜
난이도: 실버 1
길찾기 느낌으로 좀 풀어보려 했는데
알고리즘이 기억이 잘 나지 않았습니다.

그래프를 넣어서 하다가 보니
첫 시작점을 찾는 for 문이 하나 더 들어갔었는데 시간 초과가 났습니다.
set 으로 바꿔보니까 바로 시작이 가능해서 그 차이가 있던 것 같습니다.

파이썬에서 재귀를 쓸 경우 호출이 너무 많으면 리커전 에러가 뜨는데
시간만 괜찮다면
sys.setrecursionlimit(10**9)
이런 걸 붙여서 넘어가는 게 가능했습니다.

그리고 재귀나 while 같은 루프에선
탈출문이 중요한데 자꾸 빠뜨려서 나중에야 문제를 찾았습니다.

하지만 다익스트라 같은 알고리즘을 익혀 두는 것이 나을 것 같습니다.

유형: 그래프 이론, 그래프 탐색, 너비 우선 탐색, 데이크스트라
난이도: 실버 2
@HyowonSin HyowonSin added the BOJ label Jul 20, 2023
@HyowonSin HyowonSin self-assigned this Jul 20, 2023
@JeonHyoChang JeonHyoChang merged commit 5e17ab8 into CodeSquad-2023-BE-Study:main Jul 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants