전체 글 86

[파이썬] 백준 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..

백준 10157 자리배정 파이썬 풀이

https://www.acmicpc.net/problem/10157 10157번: 자리배정 첫 줄에는 공연장의 격자 크기를 나타내는 정수 C와 R이 하나의 공백을 사이에 두고 차례대로 주어진다. 두 값의 범위는 5 ≤ C, R ≤ 1,000이다. 그 다음 줄에는 어떤 관객의 대기번호 K가 주어진다. www.acmicpc.net 처음에 이렇게 생긴 좌석배치를 보고 파이썬 2차원 배열은 왼쪽 위부터 arr[0][0] 이니까 좌석을 뒤집어서 요런식으로 배열을 만든 후 설계를 했다. 일단 저렇게 숫자를 배치하는 문제는 SWEA의 달팽이 문제와 상당히 흡사하다. https://gkim1011.tistory.com/11 SWEA 13704 달팽이 숫자 https://swexpertacademy.com/main/ta..

백준 2628 종이자르기 파이썬 풀이

https://www.acmicpc.net/problem/2628 2628번: 종이자르기 첫줄에는 종이의 가로와 세로의 길이가 차례로 자연수로 주어진다. 가로와 세로의 길이는 최대 100㎝이다. 둘째 줄에는 칼로 잘라야하는 점선의 개수가 주어진다. 셋째 줄부터 마지막 줄까지 한 www.acmicpc.net 점선의 숫자들의 절댓값 차가 결국에는 잘린 종이의 넓이라는 점을 생각하였다. 가로 자르는 좌표 리스트, 세로 잘르는 좌표 리스트를 하나씩 만들고, 숫자를 각각 리스트에 넣었다. 그 다음에 끝값 (0이랑 넓이, 0이랑 높이)를 넣고 sort 해준다. 자른 부분의 좌표 차이의 곱이 넓이이다. width, height = map(int, input().split()) cut_number = int(input..

SWEA 1979 어디에 단어가 들어갈 수 있을까 파이썬 풀이

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYJ7KE5qKy8DFASv&contestProbId=AV5PuPq6AaQDFAUq&probBoxId=AYKLHkm6QIwDFAVG&type=PROBLEM&problemBoxTitle=3.+list+%EC%B6%94%EA%B0%80%EB%AC%B8%EC%A0%9C&problemBoxCnt=4 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 배열에서 딱 K길이만큼 1인 것들을 찾아야한다. total을 총 단어 개수로 하고, cnt를 그 줄의 1의 개수로 두면서 계속 초기화를 ..

백준 2578 빙고 파이썬 풀이

https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 몇번째 번호를 불렀을 때 빙고가 3개 이상 완성되는지 찾는 문제이다. MC가 번호를 불러줄때마다 해야할 일이 2가지 있다. 1) MC가 불러준 번호에 X표시하기 2) 빙고판에 빙고 몇개 생겼는지 확인하기 그래서 나는 이 두 과정을 각각의 함수에 담아서 했다. 일단 처음에 입력 데이터를 보면 11 12 2 24 10 16 1 13 3 25 6 20 5 21 17 19 4 8 14 9 22 15 7 23 18 #여..

SWEA 4893 이진탐색 (list1)

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYJ7KE5qKy8DFASv&contestProbId=AX73CRX6xEADFARO&probBoxId=AYKImykKjWgDFASv&type=USER&problemBoxTitle=list2&problemBoxCnt=5#none SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 사람마다 페이지를 찾는 과정을 한번 거쳐야 했기 때문에, 함수로 답을 구현해보았다. 내가 원하는 페이지를 입력받고, mid를 바꾸는 이진탐색을 하며, 결국 mid가 내가 원하는 페이지일때 몇번시도했는지를..

SWEA 전기버스 풀이2: 재귀 활용해서 풀기

https://gkim1011.tistory.com/10 SWEA 13565 전기버스 https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYJ7KE5qKy8DFASv&contestProbId=AX7UKy7KaMwDFAVm&probBoxId=AYJ7KE5qKzADFASv&type=USER&problemBoxTitle=list1&problemBoxCnt=.. gkim1011.tistory.com 요즘 재귀문제를 많이 풀어서 그런지 bucket으로 말고 재귀로도 이 문제를 풀 수 있겠다는 생각을 했다. 지금 있는 칸을 매개변수 now로 받아오고, 재귀로 들어가면서 now를 계속 바꿔주는 코드이다. T = int(input(..

SWEA 그래비티 풀이2

https://gkim1011.tistory.com/9 SWEA 13569 그래비티 풀이 https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYJ7KE5qKy8DFASv&contestProbId=AX7UNdWaadEDFAVm&probBoxId=AYJ7KE5qKzADFASv&type=USER&problemBoxTitle=list1&problemBoxCnt=.. gkim1011.tistory.com 저번에는 문제에서 주어진 그림을 참고하여, 블럭 하나하나를 2차배열 bucket에 담은 후 중력 작용을 확인했었다. 하지만 굳이 bucket으로 안풀어도 되는 문제였다. 일단 생각해야 하는 것은 낙차가 가장 크게 생길 수 있는..