sum()

 

sum()함수는 요소를 모두 더한 값을 제공합니다.

 

a=[1,3,5]

# 결과>>9
print(sum(a))

 

max()

 

max()함수는 요소 중 가장 큰 값을 반환합니다.

 

a=[1,3,5]
b=['a','b','c']

# 결과>>5
print(max(a))

print(ord('a')) #결과>>97
print(ord('b')) #결과>>98
print(ord('c')) #결과>>99

# 결과>>c
print(max(b))

문자열은 코드값으로 최대값을 반환합니다.

 

 min()

 

min()함수는 요소 중 가장 작은 값을 반환합니다.

 

a=[1,3,5]
b=['a','b','c']

# 결과>>1
print(min(a))

print(ord('a')) #결과>>97
print(ord('b')) #결과>>98
print(ord('c')) #결과>>99

# 결과>>a
print(min(b))

문자열은 코드값으로 최소값을 반환합니다.

'Python > 파이썬 기초' 카테고리의 다른 글

파이썬_기초 20_map()  (0) 2020.04.19
파이썬_기초 19_ord(), chr()  (0) 2020.04.17
파이썬_기초 17_주석  (0) 2020.04.11
파이썬_기초 16_논리연산자  (0) 2020.04.10
파이썬_기초 15_비교연산자  (0) 2020.04.10

 1099 : [기초-2차원배열] 성실한 개미


영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다.

왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데,
그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다.

개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
(오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)

이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다.

미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
오른쪽 또는 아래쪽으로만 움직였다.

미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.

단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.


미로 상자의 테두리는 모두 벽으로 되어 있으며,
개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.

 

정답

a=list()

for i in range(10):
    a.append(input().split(' '))

x=2-1
y=2-1

b=0
c=0

for j in range(x,10): #x
    
    if a[b][c] == '2':
        a[b][c] = 9
        break

    for k in range(y,10): #y

        if a[j][k] == '0':
            a[j][k] = 9
        elif a[j][k] == '1':
            y= k-1
            break
        elif a[j][k] == '2':
            b= j
            c= k
            break

for n in range(10):
    for m in range(10):
        print(a[n][m],end=' ')
    print()

 

모범 소스

m=[]
for i in range(12) :
    m.append([])
    for j in range(12) :
        m[i].append(0)

for i in range(10) :
    a=input().split()
    for j in range(10) :
        m[i+1][j+1]=int(a[j])

x=2
y=2
while True :
    if m[x][y]==0 :
        m[x][y]=9
    elif m[x][y]==2 :
        m[x][y]=9
        break

    if (m[x][y+1]==1 and m[x+1][y]==1) or (x==9 and y==9) :
        break

    if m[x][y+1]!=1 :
        y+=1
    elif m[x+1][y]!=1 :
        x+=1
    

for i in range(1, 11) :
    for j in range(1, 11) :
        print(m[i][j], end=' ')
    print()

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1098 : [기초-2차원배열] 설탕과자 뽑기 

 

부모님과 함께 유원지에 놀러간 영일이는
설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.

길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,

막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
(잉어, 붕어, 용 등 여러 가지가 적혀있다.)

 

격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,

격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.

 

 

정답

h,w=input().split(' ')
h=int(h)
w=int(w)

a=[[0 for ii in range(w)] for jj in range(h)]

n=input()
n=int(n)

for i in range(n):
        l,d,x,y=input().split(' ')
        l=int(l) 
        d=int(d) 
        x=int(x)-1
        y=int(y)-1

        for j in range(l):
        
                if d == 1:
                        a[int(x)+j][int(y)]= 1
                else:
                        a[int(x)][y+j]= 1

for k in range(h):
        for n in range(w):
                print(a[k][n],end=' ')
        print()

 

모범 소스

a,b=input().split()
h=int(a)
w=int(b)

m=[]
for i in range(h+1) :
    m.append([])
    for j in range(w+1) :
        m[i].append(0)

n=int(input())

for i in range(n) :
    l,d,x,y=input().split()
    for j in range(int(l)) :
        if int(d)==0 :
            m[int(x)][int(y)+j]=1
        else :
            m[int(x)+j][int(y)]=1


for i in range(1, h+1) :
    for j in range(1, w+1) :
        print(m[i][j], end=' ')
    print()

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1097 : [기초-2차원배열] 바둑알 십자 뒤집기(설명)


부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가...

"십(+)자 뒤집기를 해볼까?"하고 생각했다.

바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.

참고
가로 번호, 세로 번호를 사용할 수 있는 2차원 배열을 사용하면
이러한 형태를 쉽게 기록하고 사용할 수 있다. 물론 더 확장한 n차원 배열도 만들 수 있다.


예시
int n, i, j, x, y;
int a[20][20]={};
for(i=1; i<=19; i++) //한 줄씩 바둑판 상황 입력 받기
for(j=1; j<=19; j++)
scanf("%d", &a[i][j]);

scanf("%d", &n); //좌표 개수 입력받기

for(i=1; i<=n; i++) //좌표의 개수만큼
{
scanf("%d %d", &x, &y);
for(j=1; j<=19; j++) //가로 줄 흑<->백 바꾸기
{
if(a[x][j]==0) a[x][j]=1;
else a[x][j] = 0;
}
for(j=1; j<=19; j++) //세로 줄 흑<->백 바꾸기
{
if(a[j][y]==0) a[j][y]=1;
else a[j][y] = 0;
}
}
...

 

정답

a=list()

for i in range(1,20):
        a.append(input().split(' '))

b=input()
b=int(b)

for j in range(b):
    c,d=input().split(' ')
    c=int(c)-1
    d=int(d)-1

    for k in range(19):
        if a[c][k] == '0':
            a[c][k]= '1'
        else:
            a[c][k]= '0'

        if a[k][d] == '0':
            a[k][d]= '1'
        else:
            a[k][d]= '0'
        
for n in range(19):
    for m in range(19):
        print(a[n][m],end=' ')
    print()

 

모범 소스

m=[]
for i in range(20) :
    m.append([])
    for j in range(20) :
        m[i].append(0)

for i in range(19) :
    a=input().split()
    for j in range(19) :
        m[i+1][j+1]=int(a[j])
    
n=int(input())

for i in range(n) :
    x,y=input().split()
    for j in range(1, 20) :
        
        if m[j][int(y)]==0 :
            m[j][int(y)]=1
        else :
            m[j][int(y)]=0

        if m[int(x)][j]==0 :
            m[int(x)][j]=1
        else :
            m[int(x)][j]=0

for i in range(1, 20) :
    for j in range(1, 20) :
        print(m[i][j], end=' ')
    print()

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기(설명)


기숙사 생활을 하는 학교에서 어떤 금요일(전원 귀가일)에는 모두 집으로 귀가를 한다.

오랜만에 집에 간 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가
"바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다.

바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.


참고
가로번호, 세로번호를 사용할 수 있는 2차원 배열을 사용하면
이러한 형태를 쉽게 기록하고 사용할 수 있다. 물론 더 확장한 n차원 배열도 만들 수 있다.

예시
int n, i, j, x, y;
int a[20][20]={};
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d %d", &x, &y);
a[x][y]=1;
}
for(i=1; i<=19; i++) //한 줄(위에서 아래로) 씩
{
for(j=1; j<=19; j++) //한 열(왼쪽에서 오른쪽으로) 씩
{
printf("%d ", a[i][j]); //값 출력
}
printf("\n"); //줄 바꾸기
}

 

 

정답

a=input()
a=int(a)
d=[[0]*20 for j in range(20)]

for i in range(a):
    b,c=input().split(' ')
    d[int(b)][int(c)]=1

for j in range(1,20):
    for k in range(1,20):
        print(d[j][k],end=' ')
    print()

 

모범 소스

m=[]
for i in range(20) :
    m.append([])
    for j in range(20) :
        m[i].append(0)
    
n=int(input())
for i in range(n) :
    x,y=input().split()
    m[int(x)][int(y)]=1

for i in range(1, 20) :
    for j in range(1, 20) :
        print(m[i][j], end=' ')
    print()

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

주석

주석은 코드를 짤 때 출력되지 않는 부분입니다.

 

# 한줄 주석

'''
여러줄 주석 
1번
'''

"""
여러줄 주석 
2번
"""

한줄을 주석하려면 #(샵)을 사용합니다.

 

여러줄을 주석하려면 """(큰따옴표) 3개를 이용하거나 '''(작은따옴표) 3개를 이용합니다.

 

키보드 단축키를 이용하는 방법도 있습니다.

 

주석 생성 : ALT + 3

주석 제거 : ALT + 4

+ Recent posts