본문 바로가기

분류 전체보기

(53)
백준 1026 보물 파이썬 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 가장 작은 S를 구하기 위해서는 (첫번째 배열의 가장 큰값)*(두번째 배열의 가장 작은값)이 돼야 한다. 이 생각이 바로 떠올랐다면 매우 쉬운 문제였다. n =int(input()) a = list(map(int,input().split())) b = list(map(int,input().split())) a.sort() b.sort(reverse=True) re = 0 for i in r..
백준 14268 회사 문화 1 파이썬 https://www.acmicpc.net/problem/14268 14268번: 회사 문화 2 영선회사에는 매우 좋은 문화가 있는데, 바로 상사가 직속 부하를 칭찬하면 그 부하가 부하의 직속 부하를 연쇄적으로 칭찬하는 내리 칭찬이 있다. 즉, 상사가 한 직속 부하를 칭찬하면 그 부하 www.acmicpc.net 처음에는 칭찬을 받을때마다 dp값을 갱신시켜줬었다. 하지만, 그렇게 했더니 시간초과가 났고 칭찬받은 칭찬의 크기를 저장해준뒤 부모노드를 저장한 배열을 자식노드를 저장한 배열로 바꿔준뒤 dp값이 0이 아니면 dfs를 돌려 re값을 채워줬다. 핵심 Key-word 1. 입력받을때마다 dp값을 갱신시켜주면 안 됨. 2. 부모노드를 저장한 배열을 자식노드를 저장한 배열로 바꿔줌. 3. dp가 0이 아닐..
백준 18290 NM과 K (1) 파이썬 https://www.acmicpc.net/problem/18290 18290번: NM과 K (1) 크기가 N×M인 격자판의 각 칸에 정수가 하나씩 들어있다. 이 격자판에서 칸 K개를 선택할 것이고, 선택한 칸에 들어있는 수를 모두 더한 값의 최댓값을 구하려고 한다. 단, 선택한 두 칸이 인접 www.acmicpc.net 백트레킹 문제였다. 주의할점이 있다면 이전에 방문처리했던 vist배열을 이후에 방문처리하고 다시 원상복구할때 이전 방문처리했던 배열까지 바꿔버리는 부분을 조심해주면 된다. 또한 배열 숫자의 크기가 음수도 있으므로 최댓값을 0으로 설정해주면 안 된다. import sys input = sys.stdin.readline def back(t,x,y,c): global sums,vist if ..
백준 2822 점수 계산 파이썬 https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net 입력을 받을때 몇번째로 입력을 받았는지와 점수의 크기가 매칭이 되어있는 리스트를 만드는 것이 핵심이였다. s = [(int(input()),i) for i in range(1,9)]#몇번째로 입력받았는지 알아야하니 입력받는 순서도 저장해줌 s.sort(reverse=True)#내림차순 정렬 d=[] sums=0 for i in range(5):#5번째까지만 구하는거니까 range(5) d...
백준 20115 에너지 드링크 파이썬 https://www.acmicpc.net/problem/20115 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 처음에는 b = a(제일 작은값/2) + b(제일 큰값) 해주면 된다고 생각해 whlie 문을 사용해 매번 sort를 하고 배열[0]과 배열[-1]을 계속더해줘 배열의 길이가 1일때 whlie문이 종료되게 해줬다. n=int(input())#O(NlogN) s = list(map(int,input().split())) while len(s)!=1: s.sort() a = s.pop() s[0] =..
백준 3015 오아시스 재결합 파이썬 반례 설명 및 테스트케이스 공유 https://www.acmicpc.net/problem/3015 3015번: 오아시스 재결합 첫째 줄에 줄에서 기다리고 있는 사람의 수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에는 각 사람의 키가 나노미터 단위로 주어진다. 모든 사람의 키는 231 나노미터 보다 작다. 사람 www.acmicpc.net 입력받은 배열 1개, stack배열 1개를 만들어서 풀었다. 원래 같은 숫자도 stack배열에 넣어줬는데 시간 초과가 나서 2중리스트 형태로 만들고 바로 다음이 중복되면 stack[1]+=1 해주는 형식으로 했다. (코드 보면 한번에 이해 가능) [숫자,중복된 횟수] from collections import deque import sys input=sys.stdin.rea..
백준 19637 IF문 좀 대신 써줘 파이썬 (시간초과 해결) https://www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 처음에는 아래와 같이 입력받은 숫자보다 큰수가 나오면 멈추게 완전 탐색 방법으로 구현을 했었다. import sys input=sys.stdin.readline n,m=map(int,input().split()) s=[] for _ in range(n): a,b=input().split() b = int(b) s.append((a,b)) for _ in ..
백준 14620 꽃길 파이썬 https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net 백트레킹을 알고 있으면 쉽게 풀 수 있는 문제였다. 아래는 코드와 코드설명을 적어놨다. def ch(i,j,mit,d): cs=0#크기를 저장해줄 변수 for k in range(5): nx=dx[k]+i ny=dy[k]+j if 0