[BOJ 1920][백준 1920번] 수 찾기 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 1920][백준 1920번] 수 찾기 (파이썬 풀이)

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 🤔 문제 설명 및 입출력 ✍ 접근 방법 문제는 N개의 수로 이루어진 리스트 A를 주고, M개의 수로 이루어진 리스트 B(가칭)을 줍니다. 그리고 B의 각 요소들이 A에 포함되어있는지를 확인해서, 존재한다면 1을 출력하고, 그렇지 않다면 0을 출력합니다. 보다시피 구현해야할 기능은 매우 간단합니다. 그냥 검색만 잘하면 끝!!!! 그렇다면, 리스트 B의..

2021.06.24 게시됨

[BOJ 10814][백준 10814번] 나이순 정렬 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 10814][백준 10814번] 나이순 정렬 (파이썬 풀이)

https://www.acmicpc.net/problem/10814 🤔 문제 설명 및 입출력 ✍ 접근 방법 파이썬은 sort 함수가 매우매우매우 잘 만들어져 있다. 팀 소트를 사용해서 속도도 굉장히 빠르고, 정렬의 key 값으로 익명함수 lambda를 적용해서 개발자 입맛대로 정렬을 시킬 수 있다. 쉽게 말해서, 입력을 하나의 리스트로 몰아넣은 다음, sort와 lambda를 이용해서 깔끔하게 정리하면 된다. 👨‍💻 소스 코드 파이썬 N = int(input()) lst = [] for idx in range(N): age,name = input().split() age = int(age) lst.append((age,name,idx)) lst = sorted(lst,key= lambda x : [x[0..

2021.06.02 게시됨

[BOJ 1865][백준 1865번] 웜홀 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 1865][백준 1865번] 웜홀 (파이썬 풀이)

https://www.acmicpc.net/problem/1865 🤔 문제 설명 및 입출력 ✍ 접근 방법 음수 가중치가 들어가는 그래프 탐색 문제이다 ➡ 벨만-포드 알고리즘을 적용해서 풀자. 사실 이렇게 알고리즘을 뭔가 공식화해서 풀어재끼는게 썩 유쾌하지는 않지만, 그래도 코딩 테스트를 염두해보았을 때,머리 속을 스쳐지나가는 생각들을 단숨에 훅 잡아채는게 유리하다는 생각이 든다. 하지만, 이 문제는 시작점에서 도착점까지의 최소 경로비용을 구하는 순수 벨만-포드 문제가 아니다. 문제의 요지는 백준이가 시간이 줄어들면서, 출발 위치로 돌아오는 것이 가능한지를 물어보기 때문에, 우리는 주어진 그래프에서 벨만-포드 알고리즘이 무한히 반복되는 경우 ( 음수 사이클에 빠지는 경우)를 찾아야한다. 그럼 그 음수 사이..

2021.06.02 게시됨

[BOJ 1149][백준 1149번] RGB거리 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 1149][백준 1149번] RGB거리 (파이썬 풀이)

https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 🤔 문제 설명 및 입출력 ✍ 접근 방법 DP로 푸는 문제가 확실한데, 아쉽게도 처음 문제를 봤을때는 그런 생각을 못하고 단순한 조합 문제으로 생각했었다. 중복을 허용하는 순열 리스트를 만들어놓고, 매 3번째 입력마다 순열 리스트를 이용해서 최소값을 구하여 지속적으로 결과값에 더해가는 방식으로 접근 했다. 얼핏 보면 괜찮은 접근법이지만, 이 접근법에는 2가지 큰 구멍이 있었다...

2021.06.01 게시됨

[BOJ 10826][백준 10826번] 피보나치 수 4 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 10826][백준 10826번] 피보나치 수 4 (파이썬 풀이)

https://www.acmicpc.net/problem/10826 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 🤔 문제 설명 및 입출력 ✍ 접근 방법 피보나치 수열을 구하는 방법은 여러가지가 있는데, 그 중 가장 대표적인 방법이 재귀 함수로 구현하는 방법과 메모이제이션을 활용한 풀이이다. 나는 DP를 이용해서 풀어봤다. 점화식에 따라, n번째 피보나치 수를 구하기 위해 n-1번째 수와 n-2를 더하는데, n-1번째 수와 n-2를 매번 계산하는 것이 아니라, 저장된 어..

2021.05.19 게시됨

[BOJ 1753][백준 1753번] 최단 경로 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 1753][백준 1753번] 최단 경로 (파이썬 풀이)

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 🤔 문제 설명 및 입출력 ✍ 접근 방법 1. 그래프를 탐색해야한다. 2. 근데 edge에 (음수가 아닌) 가중치가 붙어있다. 3. 다익스트라 알고리즘으로 푼다! 라는 사고방식이 머리 속 깊이 박혀 있었기 때문에, 다익스트라를 통한 풀이법을 생각하는 것은 어렵지 않습니다. 다만 "이것을 어떻게 최적화 할까?" 라는 물음에 답하는 것이 어려웠지요. 입력값이 1

2021.05.19 게시됨

[BOJ 1932][백준 1932번] 정수 삼각형 (파이썬 풀이) 포스팅 썸네일 이미지

Algorithm/Baekjoon

[BOJ 1932][백준 1932번] 정수 삼각형 (파이썬 풀이)

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 🤔 문제 설명 및 입출력 ✍ 접근 방법 이동할 수 있는 경로가 천차만별이고, 그 과정을 다 일일이 추적하기에는 굉장히 복잡했기 때문에 메모이제이션으로 해결해야겠다는 생각이 들었다. 메모이제이션의 기본 아이디어는 입력값을 받는 배열 이외에 새로운 배열을 만들어, 현재 필요한 값을 구할 때 새로운 배열의 이전 값을 참조하여 푸는 방식으로 접근하는 것이다. 문제 예시가 트리와 유사하게 생겼기에, 각 입력값을 노드라고 생각하고 각 노드까지 도달하는데의 최대값을 저장하면 된다고..

2021.05.16 게시됨