본문 바로가기
728x90
반응형

개발공부74

[BOJ] 1644번 소수의 연속합 / 사용언어 : 파이썬(python) ※ 문제링크 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 해당 문제는 에라토스테네스의 체로 숫자의 범위안의 소수 리스트를 작성하고, 투 포인터를 활용하여 연속된 소수의 합이 조건에 만족하는지 확인하면서 풀 수 있는 문제였다. 문제 조건 중 소수의 중복사용이 불가능하고 연속한 수들만 사용가능하다고 하였기에 해당 내용을 활용하여 문제에 대입하였으며, 채점결과 문제없이 작동하였다. 자세한 풀이방법과 코드는 아래와 같다. 1. 입력받은 값을 바탕으로 소수리스트를 출력할 함수를 작성하고, 변수 값을 저장해준다. 2. 포인터와 카운트해줄 변수를 작성하고, while 반복문을 통해 조건을 걸어 만족하는 수들의 조합 수를 확인한다. (0부.. 2022. 2. 28.
[BOJ] 1806번 부분합 / 사용언어 : 파이썬(python) ※ 문제링크 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 해당문제는 투 포인터를 활용하여 해결할 수 있는 문제였다. 주의해야할 점은 2가지 정도였는데, 1. 부분합을 이루는 숫자들의 개수가 1개일 수도 있다. 2. sum함수를 사용하면 시간초과가 난다.(sum함수 호출없이 문제를 해결해야함) 처음에는 리스트형태로 변수를 선언하고 sum함수로 풀어보려다 시간초과가 나와서 코드를 변형하여 해결하였다. 즉, 조건을 충족하면서 문제를 해결하기 위해서는 결과값이 리스트형태가 아니라 한개의 변수형태로 .. 2022. 2. 27.
[BOJ] 2470번 두 용액 / 사용언어 : 파이썬(python) ※ 문제링크 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 해당 문제는 투 포인터와 관련된 문제로 2개의 포인터를 사용해서 값을 체크하고 조건에 충족하면 갱신하는 식으로 해결할 수 있는 문제였다. 용액의 성질을 리스트에 저장하고, 정렬한 후 좌측끝과 우측끝 각각 포인터를 지정하고 값을 확인하는 방식으로 문제를 해결했으며, 자세한 풀이방법과 코드는 아래와 같다. 1. 입력받은 값을 리스트와 변수로 지정하여 저장한다. 2. 용액들의 성질을 저장한 리스트를 오름차순으로 정렬한 후.. 2022. 2. 26.
[BOJ] 3273번 두 수의 합 / 사용언어 : 파이썬(python) ※ 문제링크 채점 현황 www.acmicpc.net 해당 문제는 투 포인터를 활용하여 해결할 수 있는 문제였다. 사실 반복문만으로도 결과는 출력할 수 있지만 당연하게도 시간초과가 되었다. 핵심은 정렬 후 양쪽 끝에서부터 하나씩 쌍을 만들어 값을 비교하는 것으로 포인터를 0과 n-1로 주어 숫자쌍의 합에 따라 포인터를 이동시키면 된다. 자세한 문제풀이방법과 코드는 아래와 같다. 1. 입력받은 값들로 변수와 숫자리스트를 생성하여 저장한다. 2. 포인터들로 숫자쌍을 생성하여 숫자쌍의 합이 x보다 크면, 우측 포인터를 -1하고, x보다 작으면 좌측 포인터를 +1하여 비교하다가 좌측과 우측포인터의 차이가 1이면 조건문을 종료한다. 3. 조건문 종료 후 결과값을 출력한다. n = int(input()) number.. 2022. 2. 23.
[BOJ] 4485번 녹색 옷 입은 애가 젤다지? / 사용언어 : 파이썬(python) ※ 문제링크 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 해당 문제는 다익스트라 알고리즘으로 사용하여 해결 가능한 문제였다. 다익스트라를 구현하기 위해 파이썬의 heapq을 사용하였고,그 외에는 다른 BFS문제와 같은 형태로 로직을 구성하여 구현하였다. 자세한 풀이방법과 코드는 아래와 같다. 1. 지정된 조건이 나올때까지 반복루프를 돌 수 있게 작성하고 입력값들을 바탕으로 동굴을 갱신하여 저장한다. 2. heapq와 리스트를 활용하여 다익스트라 알고리즘을 구현하고 return값을 최저비용.. 2022. 2. 22.
[BOJ] 15686번 치킨배달 / 사용언어 : 파이썬(python) ※ 문제링크 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 해당문제는 DFS와 백트래킹으로 풀 수 있는 문제였다. 모든 경우의 수를 탐색해야하기에 브루스포트 알고리즘으로도 볼 수 있는 문제였으며, 간단하게 풀이방법을 설명하면 DFS와 백트래킹을 이용하여 치킨집이 존재할 수 있는 모든 경우의수(조합)을 구하고 문제에서주어진 거리 공식을 활용하여 거리를 계산하여 최솟값을 출력하면 되는 문제였다. 자세한 풀이방법과 코드는 아래와 같다. 1. 입력받은 값들을 바탕으로 치킨상점과 집의 최초 위치를.. 2022. 2. 21.
[BOJ] 11052번 카드 구매하기 / 사용언어 : 파이썬(python) ※ 문제링크 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 해당문제는 동적프로그래밍과 관련된 문제로, 해결을 위해서는 점화식을 도출하는 것이 필수적이었다. 점화식을 도출하기 위해 가장 작은 단위부터 원리를 생각해봤을때, 카드팩을 1개살때는 P1을, 2개살때는 P1 + P1 과 P2중에 큰 값을, 3개 살때는 P1+P1+P1, P2 + P1, P3중 큰 값을 구하면 되었다. 즉, 구해야하는 카드의 수가 i일때, 1부터 i-1까지의 조합들의 값을 반복문을 통해 dp[i]에 저장된 값과 비교하여 큰 값으로 갱신하게끔 하면.. 2022. 2. 20.
[BOJ] 14938번 서강그라운드 / 사용언어 : 파이썬(python) ※ 문제링크 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 해당 문제는 양의 가중치가 있는 최단경로를 구하는 문제로 다익스트라 알고리즘을 활용하여 해결할 수 있는 문제였다. 기본적인 다익스트라 알고리즘을 작성하여 각각의 정점에서 다른 정점으로 가는 최단 경로를 확인한 후 조건에 맞으면 item의 개수를 더해서 얻을 수 있는 가장 많은 item수를 출력하면 되는 문제였다. 자세한 풀이방법과 코드는 아래와 같다. 1. 입력받은 값들 각각의 변수들에 저장하고, 각 정점에 대한 item의 개수는 리스트에 저장한다. 2. .. 2022. 2. 19.
[BOJ] 14225번 부분수열의 합 / 사용언어 : 파이썬(python) ※ 문제링크 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 www.acmicpc.net 해당문제는 모든 경우의 수를 탐색해서 결과값을 확인하여 해결할 수 있는 문제였다. 다만, 숫자들의 조합에서 순서는 의미를 가지지않았기에 순열이 아닌 조합의 형태로 코드를 작성해야했다. 해당 조건을 고려하여 문제를 해결하였으며, 자세한 풀이방법과 코드는 아래와 같다. 1. 입력받은 값들을 리스트형태로 저장해준다. 2. 입력될 수 있는 리스트의 길이와 값을 바탕으로 방문여부를 확인할 리스.. 2022. 2. 19.
728x90
반응형