파이썬 알고리즘 60

[파이썬] 백준 2559 수열

https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 처음에 풀때 제한시간 안보고 뭐야 왜이리 쉬워 했는데 시간초과떠서 당황한문제 2중 for문으로 풀면 안되고 for문을 한번만 돌게 해야하는 문제였다. 일단 2중 for문으로 푸는 방법은 아래와 같다. N, K = map(int, input().split()) arr = list(map(int, input().split())) MAX = -21e8 for i in range(N-K): ..

[파이썬] 백준 2304 창고 다각형

https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net bucket이라는 새로운 배열을 만들고, 검은 선에 해당하는 부분을 숫자로 채우는 식으로 발상을 했다. 즉, 새로운 bucket은 [0, 0, 4, 4, 6, 6, 6, 6, 10, 8, 8, 8, 8, 8, 8, 8, 0, 0, ...] 그리고 bucket안에있는 수를 총합하면 다각형의 면적이 된다. 일단 주어진 input을 모두 bucket에 담아서 위 사진같은 bucket을 ..

[파이썬] 백준 2491 수열

https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 설계 시 주의했던 점) 1. 수열이 증가 or 감소할 수 있기 때문에 증가하는 수열의 길이와 감소하는 수열의 길이를 따로 측정해줬다. 맨 끝네서 max 함수를 통해 실제 최대값을 구했다. 2. 문자열을 끝까지 돌기 전까지는 최대 길이의 수열이 몇인지 모르기 때문에, 증가or 감소하는 수열이 끊길때 (계속 증가or감소하지 않을때), cnt변수를 초기화하면서 continue를 해줬다. 3. 한자리로 이루..

[파이썬] SWEA 13702 델타검색

https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AX73EWcKxLYDFARO SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 다이렉트 배열을 쓰는 대표유형 중 하나이다. 전체 sum을 구하는거니까 sum이라는 새로운 변수를 for문 바깥에 둬야한다. 전체풀이) T = 10 for tc in range(1, T+1): n = int(input()) a = [list(map(int, input().split())) for _ in range(n)] directy=[-1,1,0,0] directx=[0,0,-1,..

[파이썬] 백준 2605 줄 세우기

https://www.acmicpc.net/problem/2605 2605번: 줄 세우기 점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 www.acmicpc.net insert만 알면 푸는 문제였다. append는 뒤에 추가하기 insert는 인덱스를 지정해서 그 위치에 넣기 라고 생각하면 된다. N = int(input()) arr = list(map(int, input().split())) bucket = [] for i in range(N): bucket.insert(i-arr[i], i+1) print(*bucket)

[파이썬] 6190 정곤이의 단조 증가하는 수

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWcPjEuKAFgDFAU4 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 😟정곤아;;; str과 int 변환을 쓰려면은 다른 코드에서 시간을 아껴야하는 문제였다 1) input에서 주어진 숫자들의 곱을 조합으로 만들기 (dfs사용) T = int(input()) for tc in range(1, 1+T): N = int(input()) arr = list(map(int, input().split())) path = [0]*2 MAX = -1 multiples = [] d..

[파이썬] 13748 진기의 최고급 붕어빵

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYJ7KE5qKy8DFASv&contestProbId=AX8BikeKZ3sDFARO&probBoxId=AYKLHkm6QIwDFAVG&type=USER&problemBoxTitle=3.+list+%EC%B6%94%EA%B0%80%EB%AC%B8%EC%A0%9C&problemBoxCnt=4 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com n번 탐색을 3번 해야돼서 실행시간이 조금 긴 코드이지만 이런 발상을 했다는 측면에서 기록하고 싶은 문제.. 일단 진기는 m초동안 k개의 빵을..

[파이썬] 백준 2309 일곱 난쟁이 풀이 2가지

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 보고 재귀(dfs)로 푸는 방법밖에 생각이 안나서 이게 왜 브론즈....? 했던 문제 근데 알고보니 쉽게 푸는 방법이 있었고... 일단 dfs(재귀)로 푸는 방법부터... 난쟁이 7명을 뽑고, 순서는 상관 없고, 난쟁이는 한번씩 뽑하기 때문에 조합 문제이다. arr = [] for i in range(9): n = int(input()) arr.append(n) path = [0]*7 def recur(l..

[파이썬] 백준 13300 방배정 풀이

https://www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 www.acmicpc.net 2차원 버켓을 활용한 문제는 처음이었던 것 같다. 그 생각만 했으면 시간을 훨씬 더 단축했을텐데....!! 일단 input을 다 받아오고, y축은 성별, x축은 학년별 분류가 되게끔 bucket을 만들었다. 0학년은 없으니까 x축 길이에 유의하기~! student_total, room_total = map(int, input().split()) students = [li..

백준 1244 스위치 켜고 끄기 파이썬 풀이

https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 뭔가... 깔끔하게 짠 코드는 아닌것 같아서 포스팅하기 제법 부끄럽지만... 일단 이 문제는 1) 스위치를 바꾸는 사람이 남자인지 여자인지 판별하기 2) 불을 키거나 끌 스위치 결정하기 3) 불을 키거나 끄게 바꾸기 (0, 1 바꾸기) 요 3개를 해야하는 문제이다. 그중에 3번은 계속 일단 2번이 결정되기만 하면 계속 반복되기 때문에 def switch_light(k): global swit..