파이썬 200

bingo

문제 빙고 게임은 다음과 같은 방식으로 이루어진다. 먼저 아래와 같이 25개의 칸으로 이루어진 빙고판에 1부터 25까지 자연수를 한 칸에 하나씩 쓴다 다음은 사회자가 부르는 수를 차례로 지워나간다. 예를 들어 5, 10, 7이 불렸다면 이 세 수를 지운 뒤 빙고판의 모습은 다음과 같다. 차례로 수를 지워가다가 같은 가로줄, 세로줄 또는 대각선 위에 있는 5개의 모든 수가 지워지는 경우 그 줄에 선을 긋는다. 이러한 선이 세 개 이상 그어지는 순간 "빙고"라고 외치는데, 가장 먼저 외치는 사람이 게임의 승자가 된다. 철수는 친구들과 빙고 게임을 하고 있다. 철수가 빙고판에 쓴 수들과 사회자가 부르는 수의 순서가 주어질 때, 사회자가 몇 번째 수를 부른 후 철수가 "빙고"를 외치게 되는지를 출력하는 프로그램..

colorpaper

문제 평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이 때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘 중 하나이다. 그림-1은 1번, 2번, 3번 세 장의 색종이가 순서대로 놓인 상태를 보여준다. 그림-1 여기에 그림-2에서 보인 것처럼 4번 색종이가 하나 더 놓이면 3번 색종이는 완전히 가려서 보이지 않게 된다. 그리고, 1번 색종이와 2번 색종이는 부분적으로 가려 보이며, 4번 색종이는 완전히 보이게 된다. 그림-2 N장의 색종이가 주어진 위치에 차례로 놓일 경우, 각 색종이가 보이는 부분의 면적을 구하는 프로그램을 작성하시오. 입력 입력의 첫 번째 줄에는 색종이의 장수를 나타내는 정수 N (1 ≤ N ≤ ..

class president

문제 오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다. 그래서 오민식 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 표를 살펴보자. 위 경우에 4번 학생을 보면 3번 학생과 2학년 때 같은 반이었고, 3번 학생 및 5번 학생과 3학년 때 같은 반이었으며, 2번 학생과는 4학년 때 같은 반이었음을 알 수 있다. 그러므로 이 학급에서 4번 학생과 한번이라도 같은 반..

attackrange

문제 윤성이는 어렸을 적부터 수없이 몰려오는 적으로부터 기지를 방어하는 디펜스 유형의 게임을 플레이하는 것을 좋아했다. 그래서 간단한 디펜스 게임을 만들어 보려고 한다. 당신은 윤성이를 도와, 디펜스 게임 내에서 플레이어가 설치하는 유닛의 사거리를 나타내는 기능을 구현하면 된다. 입력 입력 첫째 줄에는 디펜스 게임의 맵 크기 N이 주어딘다. 맵은 N×N 크기의 2차원 형태이다. (N은 6이상 100이하의 짝수) 둘째 줄에는 유닛이 설치될 위치 X, Y와 유닛의 사거리 R이 주어진다. X는 행의 번호, Y는 열의 번호를 의미한다. (X, Y는 1이상 N이하의 자연수, R은 N/2이하의 자연수) 출력 예제 출력과 같이 유닛의 사거리를 나타내어 출력한다. (유닛의 사거리가 아무리 길어도 맵을 벗어날 수는 없다..

상자 꾸미기

문제 면이 6개인 상자가 있다. 이를 여러 가지 색종이를 붙여 꾸밀려고 하는데, 단 조건이 있다. 인접한 면에 같은 색의 색종이를 붙이면 안 된다는 것이다. 또한, 한 면에는 한 장의 색종이만 붙일 수 있다. 여러 가지 색의 색종이들이 주어졌을 때, 조건을 만족하여 상자의 모든 면에 붙일 수 있는지 판별하는 프로그램을 작성하시오. 입력 첫째 줄에 색종이의 장수 N ( 1 2: cnt += 2 else: cnt += v if cnt >= 6: break if cnt >= 6: print('YES') else: print('NO') cs 파이썬 중복제거 참조 aceatom.tistory.com/128 [python] 리스트 안에 있는 중복된 값 개수 구하기 리스트안의 중복된 값의 개수 w_count = {}..

offset

문제 5x5 2차원 배열이 주어질 때 어떤 원소가 상하좌우에 있는 원소보다 작을 때 해당 위치에 * 을 표시하는 프로그램을 작성하시오. 경계선에 있는 수는 상하좌우 중 존재하는 원소만을 비교한다. 입력 5x5 행렬의 정보가 25 개의 수로 주어진다. 각 수는 0 에서 9 사이 수이다. 출력 *를 포함한 행렬을 출력예의 형식으로 출력한다. 예제 입력 3 4 1 4 9 2 9 4 5 8 9 0 8 2 1 7 0 2 8 4 2 7 2 1 4 예제 출력 3 4 * 4 9 * 9 4 5 8 9 0 8 2 * 7 0 2 8 4 * 7 2 * 4 # 공부하기 전(후후...부끄러운 코드) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2..

[자료구조] : 연결리스트(Linked List, Double Linked List)

# Linked List #개념은 아래 링크에서 직접 값을 넣고 빼보면서 확인해볼 것. www.cs.usfca.edu/~galles/visualization/StackLL.html Linked List Stack Visualization www.cs.usfca.edu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 class Node: def __init__(self, data, next=None): self.data = data self.next = next class ..

[자료구조] : 스택(선형)

- 데이터를 제한적으로 접근할 수 있는 구조(LIFO) - 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조. 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 - push() : 데이터를 스택에 삽입 - pop() : 데이터를 스택에서 꺼내기 - 장점 : 구조가 단순해서 구현이 쉽다., 데이터 저장/읽기 속도가 빠르다. - 단점 : 데이터 최대 갯수를 미리 정해야 한다., 파이썬의 경우 재귀함수는 1000번 까지만 호출가능하다. # 재귀함수 결과가 스택과 유사하다. def recursive(data): if data < 0: print('ended') else: print(data) recursive((data-1)) print('returned', data) recursive(4) ===..

[자료구조] : 큐(선형), 힙

- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조(FIFO, First In First Out) - Enqueue : 큐에 데이터를 넣는 기능 - Dequeue : 큐에서 데이터를 꺼내는 기능 # 파이썬에서의 큐 import queue # 1. 일반적인 큐(FIFO) data_queue = queue.Queue() data_queue.put('FIFO Q') data_queue.put(1) print(data_queue.qsize()) print(data_queue.get()) print(data_queue.qsize()) # 2. LIFO(Last In First Out) data_queue = queue.LifoQueue() data_queue.put('LIFO Q') data_queue.p..

[자료구조] : 배열

1. 같은 종류의 데이터를 효율적으로 관리하기 위해 사용 2. 같은 종류의 데이터를 순차적으로 저장 장점 : 빠른 접근 가능 단점 : 추가/삭제가 쉽지 않음 - 1차원 배열 data = [1, 2, 3, 4, 5] print(data) - 2차원 배열 data2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(data2) # 예제 dataset리스트에서 전체 이름 안에 'M'의 갯수? dataset = [ 'Moran, Mr.Owen', 'Brand, Mr.James', 'McCarthy, Mr.Timothy J' ] m_count = 0 for data in dataset: for idx in range(len(data)): if data[idx] == 'M': m_count..

반응형