본문 바로가기

백준11

11053.가장 긴 증가하는 부분 수열 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 이게 원래 dp 동적 프로그래밍을 사용해야 하는 거 같지만 어쨌든 이렇게 풀었다 가장 위에서부터 점점 커지는 게 몇 개 있는지 체크한다 이미 체크가 끝난 자리는 개수를 기억해놔서 다시 지나가면 바로 알려주게 한다 가장 뒤에는 1개 그 앞에는 작아지면 2개 커지면 다시 1개 이런 식으로 해도 근데 n*n 복잡도이다 l=i.. 2023. 5. 11.
2606.바이러스 python https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net bfs 를 사용한 간단하다 딕셔너리로 어디에서 어디가 이어지는지 만들고 재귀함수로 방문 가능한곳을 모두 집합에 넣어서 그 집합의 크기가 바이러스 퍼지는 크기다 d={} input() n=int(input()) for i in range(n): i=list(map(int,input().split())) d.setdefault(i[0],set()) d.setdefault(i[1],set()) d[i[0]].. 2023. 5. 6.
1874.스택 수열 python https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 언제 한번 풀어본 거 같다 스택을 이용해서 주어진 수를 출력할 때 현재 스택의 마지막 값이 그 수가 아니면 그 수가 나올 때까지 리스트에서 추가한다 그래도 안 나오면 그 스택을 불가능한 출력 가능한 출력이라면 반복문이 끝나고 스택에 원소가 없어야 한다 n=int(input()) t=[] t1=list(range(1,.. 2023. 5. 5.
14503.로봇 청소기 - python https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 구현으로 가능한 문제 단순하게 문제의 조건대로 뒤로가는 기능 ,앞으로 가능기능 , 90도 회전하는 기능 함수를 만들어서 현재 시작점부터 시작해서 끝나는 조건이 나올때 까지 단계적으로 함수를 실행한다 r,l=map(int,input().split()) x,y,d=map(int,input().split()) t=[] for i in range(r): .. 2023. 4. 27.
1016.제곱 ㄴㄴ 수 - python 오타아님 문제가 그럼 https://www.acmicpc.net/problem/1016 1016번: 제곱 ㄴㄴ 수 어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수 www.acmicpc.net 에라토스테네스의 체 어제의 방법에 사용된 테네스체 방법이다 이번에는 제곱수로 나눠지지 않는 수를 구하는 방법이지만 결국 방식은 똑같다 일체 체에서 거르는 방식이라 리스트를 먼저 만들어준다 0~ n 까지라면 그냥 range(n) 하면 되지만 이건 a~b 구간이라 range(a, b+1) 을 사용한다 어차피 숫자 a 가 앞으로 a 만큼 평행이동 한 것과 똑같다 리.. 2023. 4. 25.
1644.소수의 연속합 - python https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 약간 요즘에 왜 프로그래머스를 안 풀지?라고 생각하고 있나? 구글 로그인할 때 유튜브로 숫자 보내는데 그게 로딩만 계속 돌아가고 창이 안 나온다 문자로 해도 전화로 해도 결국은 그 창에서 숫자를 눌러야 하는데 그럴 거면 뭐 다른 방식으로 인증을 왜 만들어놓은 거냐 이 망할 구글아 어쨌든 이번 문제도 투 포인터 문제다 거기에 소수까지 첨가한 소수의 크기가 커서 시간제한 안 걸리게 소수를 빠르게 구하는 방법을 생각했는데 아마도 이 방법이 그 전설적인 에라토스테네스의 체 방법을 활용해서 만들어봤다 아마 다음에 소수 문제 .. 2023. 4. 24.
1806.부분합 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N s: if b.. 2023. 4. 23.
2644.촌수계산 - python https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net dfs 부모가 1명만 있는 구조 형제끼리는 촌수가 더해지지 않고 위아래로만 더해지니까 이진 트리에서 한 부모 밑에 2마리까지의 길이의 합과 같음 최소 조상부터 위에는 모두 동일한 조상이기 때문에 그 조상들은 다 제거한다 이진트리 구조이기 때문에 그냥 한 단계씩 위로 올라가면서 마주치는 조상들을 각각 리스트에 넣어놓고 2마리의 같은 조상은 다 제거하면 남은 리스트의 길이의 합이 .. 2023. 4. 21.
2146.다리 만들기 - python https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net dfs/bfs를 응용하는 문제 기본적으로 섬의 개수나 크기는 한 번에 간단하게 끝나지만 이건 그 두 가지를 조합해서 풀어야 한다 섬의 거리를 구하는 방법은 각각 섬의 가장자리에서 시작해 가장 가까운 섬까지의 거리를 측정해야 한다. 섬의 가장자리를 구하는 방법은 일반적인 섬의 크기 구하는 방식처럼 한 칸씩 움직이다가 바다가 나오면 멈춤 그곳이 가장자리다. 그리고 다음 섬까지의 거리는 가장자리에서 시작해서.. 2023. 4. 20.
1341.사이좋은 형제 - python https://www.acmicpc.net/problem/1341 1341번: 사이좋은 형제 첫째 줄에 먹는 패턴을 출력한다. 패턴은 영식은 *로, 민식은 -로 출력한다. 만약, 패턴의 길이가 60 이하인 것이 없으면 -1을 출력한다. 가능한 패턴이 여러 가지이면 짧은 것을 출력한다. www.acmicpc.net 계속 반 먹고 반의반 먹고 1/2 1/4 1/8 1/16 .... 2의 제곱수 형태로 줄어든다 여기서 분모인 b의 값은 전체 값이므로 1/2 1/4 1/8 1/16 형식으로 증가하는 모든 분자의 합과 같다 예를 들어 문제에서 돌아가면서 반씩 먹는 경우는 2/3, 1/3 이라 함 1/2 +1/4 = 3/4이므로 분자의 값은 3이다 이런 형식으로 패턴을 찾으면 b의 갚는 2**n-1 형태로 주어진다.. 2023. 4. 19.
2839.설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 출력 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정.. 2023. 2. 25.