Part2.9_탐색&시뮬레이션_봉우리

Eugenius1st·2022년 1월 10일
0

Python_algorithm

목록 보기
4/83

봉우리

이렇게 가장자리를 0으로 초기화 하는 방법..?

a = [[0]7 for _ in range(n)]
0 으로 7
7 하고 넣을 수 있는가 했더니.. 그건 너무 복잡하고..

선생님 방법

#1. Alt+W+N 입력하고 Alt+W+V :

import sys
sys.stdin = open("input.txt", "rt")
n = int(input())
a = [list(map(int,input().split())) for _ in range(n)]
a.insert(0,[0]*n)
for x in a: # 각 행에 접근 가능
    x.insert(0,0)
    x.append(0)
a.insert(n+1,[0]*n)
print(a)

내가 생각한 코드

#1. Alt+W+N 입력하고 Alt+W+V :

import sys
sys.stdin = open("input.txt", "rt")
n = int(input())
a = [list(map(int,input().split())) for _ in range(n)]
a.insert(0,[0]*n)
for x in a: # 각 행에 접근 가능
    x.insert(0,0)
    x.append(0)
a.insert(n+1,[0]*n)

cnt = 0
for i in range(1,n+1):
    for j in range(1,n+1):
        if a[i][j]>a[i-1][j] and a[i][j]>a[i][j-1] and a[i][j]>a[i+1][j] and a[i][j]>a[i][j+1]:
            cnt+=1
print(cnt)

했더니..

배열에서 한번 나가나보다...?
이유는 모르겠다.

이유 알았다. 0이 부족한거였다.

2가 가로세로 비교할려면 적어도 n+1 개의 0이 아래 줄에 필요한데 나는그냥
a.append([0](n)) 했어서 그랬던것 같다. 그래서
a.append([0]
(n+2)) 이렇게 바꿔줬더니 되더라 ㅎ
아니면 그냥 위치 자체를

이렇게 옮기면 되고 바보야 ㅎㅎ 왜 insert가 for 문 아래 있었었니 ㅎㅎ?

선생님 코드

#1. Alt+W+N 입력하고 Alt+W+V :

import sys
#sys.stdin = open("input.txt", "rt")
# 앞으로는 이런식으로 배열을 하나 만들어서 보자!!
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
n = int(input())
a = [list(map(int,input().split())) for _ in range(n)]
a.insert(0,[0]*n)
a.append([0]*n)
for x in a: # 각 행에 접근 가능
    x.insert(0,0)
    x.append(0)

cnt = 0
for i in range(1,n+1):
    for j in range(1,n+1):
        if all(a[i][j]>a[i+dx[k]][j+dy[k]]for k in range(4)): # 이렇게 하면 4번 돌게 되는 것!!!!
           # all 은 모두가 참이어야 참이다.
            cnt+=1
print(cnt)

py 와 px 라는 배열을 활용해서 더하기 빼기를 실행했다.
all 함수를 사용해 and를 없애 가독성을 올렸고,
for 문은 뒤에 붙여서 활용할 수 있다는 것을 배웠다.

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글