
봉우리
2021. 9. 30. 16:41
⏰ 코딩테스트/리스트 탐색
지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여 있습니다. 각 격자 판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고 가정한다. 만약 N=5 이고, 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개입니다. ▣ 입력설명 첫 줄에 자연수 N이 주어진다.(1 arr[i+1][j] and arr[i][j] > arr[i][j-1] and arr[i][j] > arr[i][j+1]: num += 1 print(num) """ 5 5 3 7 2 3 3 7 1 6 1 7 2 5 3 4 4 3 6 4 1 8 7 3 5 2 """ all() 함수 이용하기 : 모두가 ..

곳감(모래시계)
2021. 9. 29. 10:15
⏰ 코딩테스트/리스트 탐색
곳감(모래시계) 현수는 곳감을 만들기 위해 감을 깍아 마당에 말리고 있습니다. 현수의 마당은 N*N 격자판으로 이루어져 있으며, 현수는 각 격자단위로 말리는 감의 수를 정합니다. 그런데 해의 위치에 따라 특정위치의 감은 잘 마르지 않습니다. 그래서 현수는 격자의 행을 기준으로 왼쪽, 또는 오른쪽으로 회전시켜 위치를 변경해 모든 감이 잘 마르게 합니다. 만약 회전명령 정보가 2 0 3이면 2번째 행을 왼쪽으로 3만큼 아래 그림처럼 회전시키는 명령입니다. 첫 번째 수는 행번호, 두 번째 수는 방향인데 0이면 왼쪽, 1이면 오른쪽이고, 세 번째 수는 회전하는 격자의 수입니다. M개의 회전명령을 실행하고 난 후 아래와 같이 마당의 모래시계 모양의 영역에는 감 이 총 몇 개가 있는지 출력하는 프로그램을 작성하세요..

사과나무(다이아몬드)
2021. 9. 28. 17:02
⏰ 코딩테스트/리스트 탐색
사과나무(다이아몬드) 현수의 농장은 N*N 격자판으로 이루어져 있으며, 각 격자안에는 한 그루의 사과나무가 심어저 있다. N의 크기는 항상 홀수이다. 가을이 되어 사과를 수확해야 하는데 현수는 격자판 안의 사과를 수확할 때 다이아몬드 모양의 격자판만 수확하고 나머지 격자안의 사과는 새들을 위해서 남겨놓는다. 만약 N이 5이면 아래 그림과 같이 진한 부분의 사과를 수확한다. 현수과 수확하는 사과의 총 개수를 출력하세요. ▣ 입력설명 첫 줄에 자연수 N(홀수)이 주어진다.(3

격자판 최대합
2021. 9. 27. 10:59
⏰ 코딩테스트/리스트 탐색
코드 이중리스트로 입력받기 = 똑같이 리스트로 입력 받고 반복해준 후 리스트 안에 넣기 n = int(input()) a = [] for i in range(n): a[i] = list(map(int, input().split())) # a = [list(map(int, input().split())) for _ in range(n)] res = 0 for i in range(n): sum1 = sum2 = 0 for j in range(n): sum1 += a[i][j] sum2 += a[j][i] if sum1 > res: res = sum1 if sum2 > res: res = sum2 for i in range(n): sum1 += a[i][i] sum2 += a[i][n-i-1] # [0,4] ..

백준 알고리즘 - 2003 - 수들의 합 2
2021. 9. 27. 09:46
⏰ 코딩테스트/리스트 탐색
코드 n, m = map(int, input().split()) arr = list(map(int, input().split())) num = 0 for i in range(n): for j in range(n+1): if sum(arr[i:j])==m: num += 1 print(num) 답은 맞지만 for 문이 2번 돌아서 시간 초과가 뜬다. n, m = map(int, input().split()) arr = list(map(int, input().split())) lt, rt, num = 0, 1, 0 sum = arr[0] while(True): if sum
두 리스트 합치기
2021. 9. 24. 11:12
⏰ 코딩테스트/리스트 탐색
두 리스트 합치기 오름차순으로 정렬이 된 두 리스트가 주어지면 두 리스트를 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 첫 번째 리스트의 크기 N(1

백준 알고리즘 - 10804 - 카드 역배치
2021. 9. 24. 10:09
⏰ 코딩테스트/리스트 탐색
풀이 swap으로 앞 뒤를 바꾸어 준다. 올림 할 필요 없이 +1 해준 후 //2 로 몫을 구한만큼 반복해주면 된다. 리스트를 1부터 20까지 만들어주면, 인덱스가 0 부터 시작하므로 조금 계산을 해야한다. 은근 실수가 나올 수 있다. 그냥 0부터 시작한대로 두고 제일 마지막에 pop(0) 으로 0을 빼주면 된다. 코드 a = list(range(21)) for _ in range(10): s, e = map(int, input().split()) for i in range((e-s+1)//2): a[s+i], a[e-i]=a[e-i], a[s+i] a.pop(0) for x in a: print(x, end=' ')
숫자만 추출
2021. 9. 16. 16:11
⏰ 코딩테스트/리스트 탐색
숫자만 추출 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다. 즉, 첫 자리 0은 자연수화 할 때 무시합니다. 출력은 120를 출력하고, 다음 줄에 120의 약수의 개수를 출력하면 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. 입력설명 첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다. 출력설명 첫 줄에 자연수를 출력하고, 두 번째 줄에 약수의 개수를 출력합니다. 입력예제 1 g0en2Ts8eSoft 출력예제 1 28 6 코..
회문 문자열 검사
2021. 9. 16. 09:47
⏰ 코딩테스트/리스트 탐색
회문 문자열 검사 N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 뒤에서 읽을 때나 같은 경우(회문 문자열)이면 YES를 출력하고 회문 문자열이 아니면 NO를 출력하는 프로그램을 작성한다. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. 입력설명 첫 줄에 정수 N(1

백준 알고리즘 - 2476 - 주사위 게임
2021. 9. 14. 16:14
⏰ 코딩테스트/구현
코드 N = int(input()) ans = 0 for i in range(N): a, b, c = map(int, input().split()) if a==b and b==c and c==a: tmp = 10000 + 1000*a elif a==b and b!=c: tmp = 1000 + 100*a elif b==c and a!=b: tmp = 1000 + 100*b elif a==c and a!=b: tmp = 1000 + 100*a else : tmp = max(a,b,c)*100 if ans ans: ans = money print(ans) sort로 오름차순 정렬 후 비교하는 것이 더 코드 길이를 줄일 수 있다.
뒤집은 소수
2021. 9. 10. 21:50
⏰ 코딩테스트/구현
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. 뒤집는 함수인 def reverse(x) 와 소수인지를 확인하는 함수 def isPrime(x)를 반드시 작성하여 프로그래밍 한다. 입력설명 첫 줄에 자연수의 개수 N(3

소수(에라토스테네스 체)
2021. 9. 10. 20:51
⏰ 코딩테스트/구현
자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. 제한시간은 1초입니다. ▣ 입력설명 첫 줄에 자연수의 개수 N(2
자릿수의 합
2021. 9. 8. 10:59
⏰ 코딩테스트/구현
자릿수의 합 N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하는 프로그램을 작성하세요. 입력설명 첫 줄에 자연수의 개수 N(3
정다면체
2021. 9. 7. 17:02
⏰ 코딩테스트/구현
정다면체 두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확률이 높은 숫자를 출력하는 프로그램을 작성하세요. 정답이 여러 개일 경우 오름차순으로 출력합니다. 입력설명 첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다. 출력설명 첫 번째 줄에 답을 출력합니다. 입력예제 1 4 6 출력예제 1 5 6 7 코드 n, m = map(int,input().split()) alist = [int(n/2), int(n/2+1)] blist = [int(m/2), int(m/2+1)] ans1 = [] for i in range(len(alist)): for j in range(len(blist)): ans1.append(a..
대표값
2021. 9. 7. 16:23
⏰ 코딩테스트/구현
대표값 N명의 학생의 수학성적이 주어집니다. N명의 학생들의 평균(소수 첫째자리 반올림)을 구하고, N명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세요. 답이 2개일 경우 성적이 높은 학생의 번호를 출력하세요. 만약 답이 되는 점수가 여러 개일 경우 번호가 빠른 학생의 번호를 답으로 한다. 입력설명 첫줄에 자연수 N(5