전체 글
-
section3.8 곳감(모래시계)알고리즘 2022. 10. 30. 22:50
현수는 곳감을 만들기 위해 감을 깎아 마당에 말리고 있습니다. 현수의 마당은 N*N 격자판으로 이루어져 있으며, 현수는 각 격자단위로 말리는 감의 수를 정합니다. 그런데 해의 위치에 따라 특정 위치의 감은 잘 마르지 않습니다. 그래서 현수는 격자의 행을 기준으로 왼쪽, 또는 오른쪽으로 회전시켜 위치를 변경해 모든 감이 잘 마르게 합니다. 만약 회전 명령 정보가 2 0 3이면 2번째 행을 왼쪽으로 3만큼 아래 그림처럼 회전시키는 명령입니다. 1행 10 13 10 12 15 -> 10 13 10 12 15 2행 12 39 30 23 11 -> 23 11 12 39 30 3행 11 25 50 53 15 -> 11 25 50 53 15 4행 19 27 29 37 27 -> 19 27 29 37 27 5행 19 ..
-
section3.7 사과나무(다이아몬드)알고리즘 2022. 10. 27. 23:18
현수의 농장은 N*N 격자판으로 이루어져 있으며, 각 격자 안에는 한 그루의 사과나무가 심어저 있다. N의 크기는 항상 홀수이다. 가을이 되어 사과를 수확해야 하는데 현수는 격자판 안의 사 과를 수확할 때 다이아몬드 모양의 격자판만 수확하고 나머지 격자 안의 사과는 새들을 위해서 남겨놓는다. 만약 N이 5이면 아래 그림과 같이 진한 부분의 사과를 수확한다. 10 13 10 12 15 12 39 30 23 11 11 25 50 53 15 19 27 29 37 27 19 13 30 13 19 현수과 수확하는 사과의 총개수를 출력하세요. import sys #sys.stdin = open("input.txt", "rt") n = int(input()) list = [list(map(int, input().sp..
-
section3.6 수들의 합알고리즘 2022. 10. 27. 22:09
5*5 격자판에 아래와 같이 숫자가 적혀있습니다. 10 13 10 12 15 12 39 30 23 11 11 25 50 53 15 19 27 29 37 27 19 13 30 13 19 N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합 니다. import sys sys.stdin = open("input.txt", "rt") n = int(input()) arr = [] for i in range(n): arr.append(list(map(int, input().split()))) def sumHorizon(n): sum = 0 maxSum = 0 for i in range(n): for j in range(n): sum += arr[i][j] if (j =..
-
section3.5 수들의 합알고리즘 2022. 10. 26. 23:51
N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i]+A[i+1]+…+A[j-1]+A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. import sys sys.stdin = open("input.txt", "rt") n, m = map(int, input().split()) list = list(map(int, input().split())) # print(n, m, list) # 8 3 [1, 2, 1, 3, 1, 1, 1, 2] # 1개씩 합 구하고 2개씩 합 구하고 m개씩 합 구하기 > 코드는? > 2중 for문 사용 #for i in range(1, m+1): # for j in range(n-j): # 8개 2개일..
-
section3.4 두 리스트 합치기알고리즘 2022. 10. 26. 23:49
오름차순으로 정렬이 된 두 리스트가 주어지면 두 리스트를 오름차순으로 합쳐 출력하는 프로 그램을 작성하세요. import sys sys.stdin = open("input.txt", "rt") n = input() flist = list(map(int, input().split())) m = input() slist = list(map(int, input().split())) result = [] result = flist + slist print(*sorted(result)) 정답으로 별생각 없이 풀었는데 포인터를 이용하는 문제였다 이번 주말에 한 번 더 풀어봐야겠다 import sys sys.stdin = open("input.txt", "rt") n = int(input()) a = list(map..
-
section3.3 카드 역배치알고리즘 2022. 10. 26. 23:46
1부터 20까지 숫자가 하나씩 쓰인 20장의 카드가 아래 그림과 같이 오름차순으로 한 줄로 놓여있다. 각 카드의 위치는 카드 위에 적힌 숫자와 같이 1부터 20까지로 나타낸다. 이제 여러분은 다음과 같은 규칙으로 카드의 위치를 바꾼다: 구간 [a, b] (단, 1 ≤ a ≤ b ≤ 20)가 주어지면 위치 a부터 위치 b까지의 카드를 현재의 역순으로 놓는다. 예를 들어, 현재 카드가 놓인 순서가 위의 그림과 같고 구간이 [5, 10]으로 주어진다면, 위치 5부터 위치 10까지의 카드 5, 6, 7, 8, 9, 10을 역순으로 하여 10, 9, 8, 7, 6, 5로 놓는다. 이제 전체 카드가 놓인 순서는 아래 그림과 같다. 이 상태에서 구간 [9, 13]이 다시 주어진다면, 위치 9부터 위치 13까지의 카드..
-
section3.2 숫자만 추출알고리즘 2022. 10. 25. 19:17
문자와 숫자가 섞여있는 문자열이 주어지면 그중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다. 즉 첫자리 0은 자연수화할 때 무시합니다. 출력은 120을 출력하고, 다음 줄에 120의 약수의 개수를 출력하면 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. # 아스키코드 확인해서 이용하기 # 65 ~ 90, ord("A") # 97 ~ 122, ord("a") # 48 ~ 57 import sys #sys.stdin = open("input.txt", "rt") n = input() num = '' d..
-
section3.1 회문 문자열 검사알고리즘 2022. 10. 25. 19:06
N개의 문자열 데이터를 입력받아 앞에서 읽을 때나 뒤에서 읽을 때나 같은 경우(회문 문자열) 이면 YES를 출력하고 회문 문자열이 아니면 NO를 출력하는 프로그램을 작성한다. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. import sys sys.stdin = open("input.txt", "rt") n = int(input()) for i in range(n): tmp = input() tmp = tmp.lower() for j in range(len(tmp)//2): if tmp[j]!=tmp[len(tmp)-1-j]: print("#%d NO" %(i+1)) break else: print("#%d YES" %(i+1)) 파이썬 print format이 조금 헷갈려서 헤맸다 자바에서는 , ..