목록알고리즘/백준 (56)
이숭간 공부기록
https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 문제유형 : 구현, 완탐 (dfs) 문제풀이 : 문제의 키포인트 ㅗ모양은 그냥 일반적으로 count가 4가되면 리턴하는 dfs로는 해결할 수 없음. 따로 처리를 해줘야함 나는 외부에서 따로 처리를 했는데 dfs수행에서 블록개수가 2인 시점에서 다시 자기자신을 시작점으로하는 dfs를 호출하면 된다.. (다른분 풀이 아래참고) dfs를 수행할때 겹치는 모양이 계속해서 나오게되는데 이것을 어떻게 조기종..
https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 문제유형 : 벨만포드 문제풀이 : 음수간선이 존재하는 최단경로를 구하는 문제 벨만포드 알고리즘 그대로 구현하는 문제 벨만포드 알고리즘 설명 - https://esoongan.tistory.com/185?category=915633 정답코드 : # 노드개수, 간선개수 n,m = map(int, input().split()) # 간선정보를 ..
https://www.acmicpc.net/problem/status/1715 1715번 맞은 사람 - 1 페이지 모든 언어 C++17 Java 8 Python 3 C11 PyPy3 C99 C++98 C++11 C++14 Java 8 (OpenJDK) Java 11 C++20 Python 2 PyPy2 Ruby Kotlin (JVM) Kotlin (Native) Cython Swift Text C# 9.0 (.NET) node.js Go Go (gccgo) Java 15 D D (LDC) F# (Mono) PHP Rust 2015 Rust 2018 Pa www.acmicpc.net 문제유형 : 그리디, 우선순위큐 문제풀이 : 앞에서 더한카드의 숫자가 계속해서 누적되기 때문에 가장 작은 카드들부터 2개씩 ..
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제유형 : 그리디 문제풀이 : 가장 자릿수가 큰 숫자의 길이만큼 모든 숫자의 길이를 늘려준다. (rjust이용해서 오른쪽 정렬후 앞자리에 의미없는 문자 삽입 ) 자릿수가 큰 숫자부터 차례대로 순서를 부여한다. 9부터 이렇게 풀면 ,AB 와 BB와 같은 경우를 해결하지못함, 해결하려면 경우의수를 다 따져가며 결국 완탐느낌이 되버림 < 정답풀이..
https://www.acmicpc.net/problem/2262 2262번: 토너먼트 만들기 월드시에서는 매년 n명의 사람들이 모여 월드 크래프트라는 게임의 토너먼트 대회를 치른다. 이 게임은 특성상 실력만이 승패를 좌우하기 때문에, 아무리 실력이 엇비슷한 사람이 시합을 치러 www.acmicpc.net 문제유형 : 그리디 문제풀이 : 랭킹이 가장 낮은사람부터 찾은뒤, 좌우중에 랭킹차가 작은사람과 겨루게 한다. 랭킹이 가장 낮은사람부터 찾는이유?? :랭킹이 높은사람부터 찾고 랭킹차가 작은 사람과 겨루게하면 다음 라운드에서 만나게될 사람은 이전사람보다 더 랭킹차가 큰 사람일것이므로 그 차이가 점점더 커지게된다. 랭킹이 낮은사람을 찾고 겨루게한뒤에는 해당사람은 무조건 지게되있으므로 pop후에 리스트에서 없..
https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 문제유형 : 그리디, 정렬, 이분탐색 문제풀이 : 일반적인 그리디로 그냥 풀엇을때보다 이분탐색으로 풀면 10배정도 시간이 줄어든다. bisect 라이브러리를 이용하여 해당 크레인이 버틸수있는 무게의 가장 큰값을 찾을 수 있도록 했다. 삽질.. 분명 맞는거같은데 시간초과가나서 헤맸는데 알고보니까 맨처음 예외처리를 안해줘서 그랬다. ㅜㅜ... 하ㅏㅏㅏㅏㅏㅏㅏ 최대무게를 버틸수있는 크레..