Baby Yoshi Blinking
[파이썬 알고리즘 문제풀이 입문] 이분탐색(결정알고리즘) & 그리디 알고리즘 - 랜선자르기
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 엘리트 학원은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 선생님은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 편의를 위해 랜선을 자를 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수 길이만큼 자른다고 가정하자. N개보다 많이 만드는 것도 N개를 만드는 것에 포함된다. 이때 만들 수 있는 최대 랜선의 길이를 구하는 프로그램을 작성하시오. 풀이 • 답안 : Python import sys input = sys.stdin.readlin..
[파이썬 알고리즘 문제풀이 입문] 이분탐색(결정알고리즘) & 그리디 알고리즘 - 이분검색
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다. 풀이 • 답안 : Python import sys input = sys.stdin.readline N, M = map(int, input().split()) nums = list(map(int, input().split())) nums.sort() left = 0 right = N-1 while lt M: right = mid-1 else: left = mid+1 • 답안 : Kotlin (내가 바..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 격자판 회문수
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 1부터 9까지의 자연수로 채워진 7*7 격자판이 주어지면 격자판 위에서 가로방향 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요. 회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다. 풀이 • 답안 : Python import sys input = sys.stdin.readline a = [list(map(int, input().split())) for _ in range(7)] count = 0 for i in range(3): for j in range(7): # 행 (슬라이스가 가능) tmp = a[j][i:i+5] if tmp == tmp[::-1]: count +..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 스도쿠 검사
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 스도쿠는 매우 간단한 숫자 퍼즐이다. 9x9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3x3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 완성된 9x9 크기의 스도쿠가 주어지면 정확하게 풀었으면 "YES", 잘 못 풀었으면 "NO"를 출력하는 프로그램을 작성하세요. 풀이 • 답변 : Python import sys input = sys.stdin.readline def check(a): # 행, 열 체크 for i in range(9): ch1 = [0] * 10 # 행 ch2 = [0] * 10 # 열 for j in range(9): ch1[a[i][j]] = 1 ch2[a[j..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 봉우리
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 격자판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고 가정한다. 풀이 • 내 풀이 import sys input = sys.stdin.readline N = int(input()) height = [list(map(int, input().split())) for _ in range(N)] count = 0 for i in range(N): for j in range(N): current = height[i][j] if i ..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 곶감(모래시계)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 현수는 곶감을 만들기 위해 감을 깎아 마당에 말리고 있습니다. 현수의 마당은 N*N 격자판으로 이루어져 있으며, 현수는 각 격자 단위로 말리는 감의 수를 정합니다. 그런데 해의 위치에 따라 특정 위치의 감은 잘 마르지 않습니다. 그래서 현수는 격자의 행을 기준으로 왼쪽, 또는 오른쪽으로 회전시켜 위치를 변경해 모든 감이 잘 마르게 합니다. 만약 회전 명령 정보가 2 0 3 이면 '2번째 행을 왼쪽으로 3만큼 회전'시키는 명령입니다. (첫 번째 수는 행 번호, 두 번째 수는 방향인데 0이면 왼쪽, 1이면 오른쪽, 세 번째 수는 회전하는 격자의 수 입니다.) M개의 회전 명령을 실행하고 난 후 모래시계 모양의 영역에는 감이 총 몇 개가..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 사과나무(다이아몬드)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 현수의 농장은 N*N 격자판으로 이루어져 있으며, 각 격자 안에는 한 그루의 사과나무가 심어져 있다. N의 크기는 항상 홀수이다. 가을이 되어 사과를 수확해야 하는데 현수는 격자판 안의 사과를 수확할 때 다이아몬드 모양의 격자판만 수확하고 나머지 격자 안의 사과는 새들을 위해서 남겨 놓는다. 현수가 수확하는 사과의 총 개수를 출력하세요. 풀이 • 답안 : Python import sys input = sys.stdin.readline N = int(input()) trees = [list(map(int, input().split())) for _ in range(N)] total = 0 start = end = N//2 for i ..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 격자판 최대합
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력합니다. 풀이 • 내 풀이 import sys input = sys.stdin.readline N = int(input()) square = list() result = list() for i in range(N): square.append(list(map(int, input().split()))) # 열 for i in range(N): total = 0 for j in range(N): total += square[j][i] result.append(total) # 행 for i in range(N): result.append(sum(s..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 수들의 합 (투포인터 알고리즘)
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 N개의 수로 된 수열 A[1], A[2], ..., A[N]이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + ... + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. 풀이 • 답안 : Python import sys input = sys.stdin.readline N, M = map(int, input().split()) A = list(map(int, input().split())) lt = 0 rt = 1 total = A[0] count = 0 while True: if total < M: # total이 부분합보다 작을 때 if rt < N: # rt가 끝까..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 두 리스트 합치기
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 오름차순으로 정렬이 된 두 리스트가 주어지면 두 리스트를 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. 풀이 • 내 풀이 import sys input = sys.stdin.readline N = int(input()) N_list = list(map(int, input().split())) M = int(input()) M_list = list(map(int, input().split())) result = N_list + M_list result.sort() for i in result: print(i, end=' ') • 답안 : Python import sys input = sys.stdin.readline N = int..
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 카드 역배치
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 1부터 20까지 숫자가 하나씩 쓰인 20장의 카드가 아래 그림과 같이 오름차순으로 한 줄로 놓여있다. 각 카드의 위치는 카드 위에 적힌 숫자와 같이 1부터 20까지로 나타낸다. 이제 여러분은 다음과 같은 규칙으로 카드의 위치를 바꾼다. 구간 [a,b] (1
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 숫자만 추출
·
💻 코딩테스트/파이썬 알고리즘 문제풀이
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다. 문제 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 첫 자리 0은 자연수화 할 때 무시합니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. 풀이 • 내 풀이 import sys input = sys.stdin.readline N = input().rstrip() nums = '' count = 0 for i in range(len(N)): if N[i].isalpha(): continue else: nums += N[i] print(int(nums)) for i in range(1, int(nums)+1): i..
// 코드 블럭 복사