목록Python/코드업 기초 100제 (22)
가오리의 코딩일기
[99] 성실한 개미 **서론** 영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다. 왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데, 그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다. 개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다. (오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.) 이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다. 미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지 오른쪽 또는 아래쪽으로만 움직였다. 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자. 단, 맨 ..
[98] 설탕과자 뽑기 **서론** 부모님과 함께 유원지에 놀러간 영일이는 설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다. 길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데, 막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다. (잉어, 붕어, 용 등 여러 가지가 적혀있다.) 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자. 입력 첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고, 두 번째 줄에 놓을 수 있는 막대의 ..
[97] 바둑판에 십자 뒤집기 부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가 "십(+)자 뒤집기를 해볼까?"하고 생각했다. 바둑판(19*19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n 개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자. 입력 바둑알이 깔려 있는 상황이 19*19 크기의 정수값으로 입력된다. 십자 뒤집기 횟수(n)가 입력된다. 십자 뒤집기 좌표가 횟수(n)만큼 입력된다. 단 n은 10 이하의 자연수이다. 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0..
[96] 바둑판에 흰 돌 놓기 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가 "바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다. 바둑판(19*19)에 n개의 흰 돌을 놓는다고 할 때, n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자. 입력 바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다. 둘째 줄부터 n+1번째 줄까지 흰 돌을 놓을 좌표(x,y)가 n줄 입력된다. n은 10 이하의 자연수이고, x,y 좌표는 1~19까지이며, 같은 좌표는 입력되지 않는다. 5 1 1 2 2 3 3 4 4 5 5 출력 흰 돌이 올려진 바둑판의 상황을 출력한다. 흰 돌이 있는 위치는 1, 없는 곳은 0으로 출력한다. 1 0 0 0 0 0 0 0 0 0 0 0 0 0..
2차원 배열 : 1차원 배열들의 배열 int array[3][5]; # C int[][] array = new int[3][5]; # JAVA array = [[ 0 for _ in range(5)] for _ in range(3)] # PYTHON - 5개의 공간으로 만들어진 1차원 배열을 3개 만들어라 - C, JAVA_배열, PYTHON_리스트 import numpy array1 = numpy.arange(15).reshape(3,5) array2 = numpy.zeros( (3,5) ) array3 = numpy.ones( (3,5) ) - array1 : 15개의 범위 지정(→0~14까지), 3행 5열로 만들어줘(3*5) - array2 : 15개의 범위 지정(→0~14까지), 0을 알아서 ..
[95] 이상한 출석 번호 부르기3 출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자. 입력 첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000) 두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다. 10 10 4 2 3 6 6 7 9 8 5 출력 출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다. 2 n = int(input()) call = map(int, input().split()) print(min(call))
[94] 이상한 출석 번호 부르기2 출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자. 입력 첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000) 두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다. 10 10 4 2 3 6 6 7 9 8 5 출력 출석을 부른 번호 순서를 바꾸어 공백을 두고 출력한다. 5 8 9 7 6 6 3 2 4 10 n = int(input()) call = list(map(int, input().split())) call.reverse() # 리스트의 메소드, call 뒤집기 print(call) # 리스트 형태 말고 공백으로 구분해서 출력
1. 배열≒상자 - 같은 자료형의 데이터들을 하나의 변수로 정의 - 원하는 번호로 검색해서 한 번에 찾을 수 있음 - 메모리 삭제 시 공간이 그대로 있음(→낭비) - 주소를 하나 추가했을 때 뒤로 한 칸씩 밀려서 저장됨 2. 리스트≒화살표 - 서로 다른 자료형의 데이터들도 하나의 변수로 정의할 수 있음 - 배열처럼 검색해서 한 번에 찾아가는게 아니라 순차적으로 넘어감 - 메모리 삭제 시 그 주소와의 연결을 끊고(?) 다음 주소와 연결해버림 - 주소를 하나 추가했을 때 빈 공간에 저장해두고 바로 연결 [93] 이상한 출석 번호 부르기1 정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다. 선생님은 출석부를 보고 번호를 부르는데, 학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부른다..
[86] 그림 파일 저장용량 계산하기 이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때, 압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자. w, h, b = map(int, input().split()) result = (w*h*b)/(8*1024**2) print(round(result, 2), 'MB') [87] 여기까지! 이제 그만~ 1, 2, 3 ... 을 순서대로 계속 더해나갈 때, 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자. # for num = int(input()) sum = 0 for i in range(1, num+1): if sum >= num: break sum += i i += ..
[78] 짝수 합 구하기 정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자. num = int(input()) sum1 = 0 for i in range(0, num+1, 2): sum1 += i print(sum) # 다른 방법들 sum2 = [i for i in range(2, num+1, 2)] print(sum(sum2)) sum3 = range(2, num+1, 2) print(sum(sum3)) [79] 원하는 문자가 입력될 때까지 반복 출력하기 'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자. # while문 char = input().split() while char != 'q': print(char[i]) i += 1 # for문 cha..