목록Python/이코테 (25)
가오리의 코딩일기
N X M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상,하,좌,우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하시오. 다음의 4 X 5 얼음 틀 예시에서는 아이스크림이 총 3개 생성된다 입력조건 → 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로길이 M이 주어진다 → 두 번째 줄부터 N+1번째 줄까지 얼음 틀의 형태가 주어진다 → 이때 구멍이 뚫려있는 부분은 0, 그렇지 않은 부분은 1이다. 출력조건 → 한 번에 만들 수 있는 아이스크림의 개수를 출력한다 # 음료수 얼려 먹기 n, m = map(int, input().spli..
현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 x 1 크기의 정사각형으로 이루어진 N x M 크기의 직사각형으로 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라보노다. 맵의 각 칸은 (A, B)로 나타낼 수 있고 A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 메뉴얼은 이러하다 1. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 2. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면 왼쪽 방향으로 회전한 다음 왼..
행복 왕국의 왕실 정원은 체스판과 같은 8 X 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서 있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다. 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위치에서 다음과 같은 2가지 경우로 이동할 수 있다 1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 이처럼 8 X 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 겨웅의 수를 출력하는 프로그램을 작성하시오. 이때 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며 열 위치를 표현할 때는 a부터 h로 표현한다 ..
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나로도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다. 입력조건 → 첫째 줄에 정수 N이 입력된다 출력조건 → 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다 n = int(input()) count = 0 for i in range(n+1): for j in range(60): for k in range(60): if '3' in str(i)+str(j)+str(k): count += 1 print(count) n = int(input()) ..
여행가 A는 N X N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 X 1크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1,1)이며, 가장 오른쪽 아래 좌표는 (N,N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 젹혀 있다. 각 문자이 의미는 다음과 같다 - L : 왼쪽으로 한 칸 이동 - R : 오른쪽으로 한 칸 이동 - U : 위로 한 칸 이동 - D : 아래로 한 칸 이동 이때 여행가 A가 N X N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 예를..
탐색(search) : 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 자료구조(Data Structure) : 데이터를 표현하고 관리하고 처리하기 위한 구조 삽입(push) : 데이터 삽입 삭제(pop) : 데이터 삭제 스택(Stack) 선입선출(First In Last Out), 후입선출(Last In First Out) 입구와 출구가 동일한 형태로 스택을 시각화 stack = [] stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() # 7 삭제 stack.append(1) stack.append(4) stack.pop() # 4 삭제 print(stack) # [5,2,3,1] print(stack[::-1]) ..
POINT - 서로 무게가 다른 볼링공을 고르는 경우의 수→ 경우의 수를 직접 구하는게 아니라 세기만 하면 된다 N, M = map(int, input().split()) k = list(map(int, input().split())) count = 0 for n in range(1, N): for m in range(1, N): if k[n] != k[m]: count += 1 print(count) n, m = map(int, input().split()) data = list(map(int, input().split())) array = [0] * 11 for x in data: array[x] += 1 result = 0 for i in range(1, m+1): n -= array[i] resu..
POINT - 1부터 차례대로 만들수 있는지 확인 n = int(input()) numbers = list(map(int, input().split())) numbers.sort() coin = 1 for i in numbers: if coin < i: break coin += i print(coin)
POINT - 0과 1로 이루어진 문자열 s - 0의 수와 1의 수를 비교해서 적음 → 실제로 뒤집에서 계산하는게 아님 - 전부 0이나 1로 바꾸는 경우를 찾고 더 작은 횟수를 가지는 것 찾기 s = input() zero = 0 one = 0 if s[0] == '0': zero += 1 else: one += 1 for i in range(len(s)-1): if s[i] != s[i+1]: if s[i+1] == '0': zero += 1 else: one += 1 print(min(zero, one)) - 0번지 값과 1번지 값 비교를 위해 0번지 값은 따로 확인한다 - range(len(s)-1) : range()_0번지부터 시작 - s[i]와 s[i+1]이 같으면 변화가 없으니 생략, 다르면 ..