[백준 1107번] 파이썬 - 리모컨
https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net # 조건 버튼은 0~9까지의 숫자와 +, - 버튼 + 버튼은 1채널 위로, -는 1채널 아래로, 채널은 무한대이며 0아래로는 안 내려간다. 이동하려고 하는 채널 N까지 최소 눌러야하는 버튼 수를 구하여라. # 접근 방법 눌릴 수 있는 버튼에 한해서 제일 가까운 채널까지 이동한다. 이 때 누르는 버튼 수는 이동채널의 길이와 같다. 그 이후에는 +와 -버튼을 이용할 수 밖에 없으므로 ..
2022.09.22
no image
[알고리즘] 반복문과 재귀
지금까지 알고리즘을 풀면서 재귀와 반복문은 많이 사용했을 것이다. 똑같은 상황에서 사용가능 한 이 두가지 방법을 언제 사용하는 것이 좋은지 알아보자. 목차 1. 재귀? 2. 반복문 3. 비교 1. 재귀(Recursion) 우선 재귀를 사용하기 위해서 수학적 귀납법 증명에 대해 간단히 알아보자. n이 0일 때 문제를 풀 수 있고 n-1에서 문제를 풀 수 있으면 n에서도 문제를 풀 수 있다 위의 2가지가 사실이면 모든 가능한 n에 대해 문제를 풀 수 있다는 것이 사실!! 이렇게 프로그램을 돌리면 순차적인 코드에서와 마찬가지로 필요한 계산이 완전히 동일하지만 단순히 표현하는 방법이 달라지는 것 재귀 위의 수학적 귀납법의 풀이 과정을 이용한 것이 재귀이다. 재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 ..
2022.09.21
[백준 1003번] 파이썬 - 피보나치 함수
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net # 조건 피보나치 함수는 f(n ) = f(n-1) + f(n-1)의 성질을 가진다. 정수 n이 주어졌을 때 0과 1이 몇 번 출력되는지 구하여라. # 접근 방법 문제에 주어진대로 재귀를 이용하여 구해봤지만 역시나 시간초과. 메모이제이션을 이용해봐도 시간초과가 나게 되었다. 0과 1이 출력되는 횟수가 수가 증가함에 따라 각각 피보나치 함수와 동일하게 출력됨을 발견 따라서 dp table을 따로 만들어 준 후 입력 n에 대해 횟수를 출력시켜준다. # 시간초과 코드 def fibo(n): glob..
2022.09.19
[백준18111번] 파이썬 - 마인크래프트
https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net # 조건 1 x 1 x 1 크기의 블록들로 이루어진 3차원 세계 땅을 고르게 해야 집을 지을 수 있다. 세로 N, 가로 M 크기의 집터 좌표 (i, j)의 가장 위에 있는 블록을 제거하여 인벤토리에 넣는다. 인벤토리에서 블록하나를 꺼내어 좌표 (i, j)의 가장 위에 있는 블록 위에 놓는다. 1번 작업은 2초, 2번 작업은 1초 인벤토리에 B개의 블록 들어있고 256의 높이 초과 불가 걸리는 최..
2022.09.18
[백준 10989] 파이썬 - 수 정렬하기 3
https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net # 조건 N개의 수가 주어질 때, 오름차순으로 정렬하여라. 첫 줄에 수의 개수 N(1
2022.09.17
[백준 2805] 파이썬 - 나무 자르기
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net # 조건 나무 M미터 필요한 상근이 목재 절단 높이 H설정 높이가 H보다 높은 나무는 H위의 부분 절단 자른 부분을 들고 집에 간다. H는 양의 정수 또는 0 필요한만큼만 들고 간다고 할 때, M미터의 나무를 집에 가져가기 위한 설정할 수 있는 높이의 최댓값 # 접근방법 브루트포스로 한다면 시간초과가 발생하기 때문에 이분탐색을 활용 처음엔 시작, 끝점을 중간..
2022.09.17
[백준 2108] 파이썬 - 통계학
https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net # 조건 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다. 둘째 줄에는 중앙값을 출력한다. 셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 ..
2022.09.16
[SWEA 1486] 파이썬 - 장훈이의 높은 선반
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV2b7Yf6ABcBBASw#none SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com # 조건 높이가 B인 선반과 N명의 점원 각 점원들의 키는 Hi 고 (1
2022.09.16
no image
[SWEA 1238] 파이썬 - Contact
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15B1cKAKwCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com # 조건 a-> b와 같은 순서로 비상연락망과 연락을 시작하는 당번에 대한 정보가 주어진다. 한 번에 여러 명에게 연락이 가능할 때 연락을 받을 수 있는 사람 중 가장 마지막에 받은 사람의 번호를 출력하라 이 때, 가장 마지막에 받은 사람이 여러 명이라면 제일 큰 번호 출력 # 접근 방법 bfs를 이용하여 연락가능한 사람들을 큐에 넣어준다. 이후 큐에 있는 번호를 pop해주며 연락 사이클을 돌려주는..
2022.09.16