import sys
import math
A_size = int(sys.stdin.readline())
A = sys.stdin.readline().replace("\n", "").split(' ')
A = [int(i) for i in A]
# A를 오름차순으로 정렬하여 작은 숫자부터 순서대로 정리된 새로운 list를 할당
sorted_A = [i for i in A]
sorted_A.sort()
P = []
# A의 각 숫자들에 대해 sorted_A에서의 index를 찾아 몇번째로 작은 숫자인지 P 수열에 새롭게 append함.
for i in A:
P.append(sorted_A.index(i))
# 이미 할당한 숫자는 sorted_A에서 -1로 대채해 재탐색되지 않도록 함.
sorted_A[sorted_A.index(i)] = -1
results = [i for i in P]
for result in results:
sys.stdout.write(str(result)+' ')
# 출처 : https://nerogarret.tistory.com/31
import mod1
print(" module name is ", mod1.__name__)
# mod1.py
def add(a, b):
return a+b
def sub(a, b):
return a-b
# if __name__ == "__main__"을 사용하면 C:\doit>python mod1.py처럼 직접 이 파일을 실행했을 때는 __name__ == "__main__"이 참이 되어
# if문 다음 문장이 수행된다.
# 반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 불러서 사용할 때는 __name__ == "__main__"이 거짓이 되어
# if문 다음 문장이 수행되지 않는다.
if __name__ == "__main__":
print(add(1, 4))
print(sub(4, 2))
""" Python Control-Flow
if
if - else
for
while
break
continue
"""
print("----- if, if - else")
a = 33
b = 200
if b > a:
print("b is greater than a")
elif a == b:
print("a and b equal")
print("----- for")
fruits = [ "apple", "banana", "cherry"]
for x in fruits:
print(x)
print("----- while, break")
i = 1
while i < 6:
print(i)
if( i == 3 ):
break
i += 1
print("----- continue")
i = 0
while i < 6:
i += 1
if( i == 3 ):
continue
print(i)
import sys;
input = sys.stdin.readline
def bip_match(n, m): # 이분 매칭
for nn, mm in [(n, m - 1), (n, m + 1), (n - 1, m - 1), (n - 1, m + 1), (n + 1, m - 1), (n + 1, m + 1)]: # 6방향으로 탐색
if 0 <= nn < N and 0 <= mm < M and not visited[nn][mm] and seat[nn][mm]:
visited[nn][mm] = True
if connect[nn][mm] == [-1, -1] or bip_match(connect[nn][mm][0], connect[nn][mm][1]):
connect[nn][mm] = [n, m]
return True
return False
for _ in range(int(input())):
N, M = map(int, input().split())
matrix = [input().strip() for _ in range(N)]
seat = [[False] * M for _ in range(N)] # 앉을 수 있는 자리인지 저장하기 위한 행렬
answer = 0
for n in range(N):
for m in range(M):
if matrix[n][m] == '.':
seat[n][m] = True
answer += 1 # 앉을 수 있는 자리이면 seat 갱신해주고 answer에 자리 수 저장
connect = [[[-1] * 2 for _ in range(M)] for __ in range(N)] # 각 자리 별 연결 위치를 저장하는 행렬
for n in range(N):
for m in range(0, M, 2): # 여기서 짝수로 해도 되고 홀수로 해도 된다. 물론, 둘 다 하면 안된다.
if seat[n][m]:
visited = [[False] * M for _ in range(N)]
if bip_match(n, m):
answer -= 1 # 이분 매칭이 될 때마다 앉을 수 있는 자리가 하나씩 줄어든다
print(answer)
# 출처 : https://velog.io/@vkdldjvkdnj/boj01014
""" [백준] 1014번 컨닝 Cheating - PYTHON https://www.acmicpc.net/problem/1014 문제 최백준은 서강대학교에서 “컨닝의 기술”이라는 과목을 가르치고 있다. 이 과목은 상당히 까다롭기로 정평이 나있기 때문에, 몇몇 학생들은 시험을 보는 도중에 다른 사람의 답지를 베끼려 한다. 시험은 N행, M열 크기의 직사각형 교실에서 이루어진다. 교실은 1×1 크기의 단위 정사각형으로 이루어져 있는데, 각 단위 정사각형은 자리 하나를 의미한다. 최백준은 컨닝을 방지하기 위해서 다음과 같은 전략을 세웠다. 모든 학생은 자신의 왼쪽, 오른쪽, 왼쪽 대각선 위, 오른쪽 대각선 위, 이렇게 총 네 자리에 앉아있는 친구의 답지를 항상 베낀다고 가정한다. 따라서, 자리 배치는 모든 학생이 컨닝을 할 수 없도록 배치되어야 한다. 위의 그림을 보자. A, C, D 혹은 E에 다른 학생을 앉히는 것은 좋은 생각이 아니다. 그 이유는 이미 앉아있는 학생이 그들의 답안지를 베낄 우려가 있기 때문이다. 하지만, B에 다른 학생을 앉힌다면, 두 학생은 서로의 답지를 베낄 수 없어 컨닝의 우려가 없다. 위와 같이 컨닝이 불가능하도록 자리를 배치 하려는 최백준의 행동에 분노한 일부 학생들이 교실의 책상을 부숴버렸기 때문에, 일부 자리에는 학생이 앉을 수 없다. 최백준은 교실의 모양이 주어졌을 때, 이 곳에서 아무도 컨닝을 할 수 없도록 학생을 배치하였을 경우에 교실에 배치할 수 있는 최대 학생 수가 몇 명인지 궁금해졌다. 최백준을 위해 이를 구하는 프로그램을 작성하라. 입력 입력의 첫 줄에는 테스트케이스의 개수 C가 주어진다. 각각의 테스트 케이스는 아래와 같이 두 부분으로 이루어진다. 첫 번째 부분에서는 교실의 세로길이 N과 가로길이 M이 한 줄에 주어진다. (1 ≤ M ≤ 10, 1 ≤ N ≤ 10) 두 번째 부분에서는 정확하게 N줄이 주어진다. 그리고 각 줄은 M개의 문자로 이루어져있다. 모든 문자는 ‘.’(앉을 수 있는 자리) 또는 ‘x’(앉을 수 없는 자리, 소문자)로 구성된다. 출력 각각의 테스트 케이스에 대해 그 교실에서 시험을 볼 수 있는 최대 학생의 수를 출력한다.