×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 2,191,227명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 이렇게 아래처럼 사용하면 2차원 배열 생성 가능
= int(input()) #width of square grid
grid = [list(map(int, input())) for _ in range(N)]
print(grid)
 
# map을 이용하여 빠르게 배열 리스트 생성 가능
arr1 = map(int, input().split())
arr2 = map(int, input().split())
print(N)
for i in arr1:
    print(i)
for i in arr2:
    print(i)
 
cs


gird 부분에서는 n번동안 map(int, input())를 list에 받아내기에 2차원이 가능하다.


arr1, arr2 = map(int, input().split())로 하면 int n, m에 각각 scanf 받는것과 동일




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
= int(input())
# 배열을 아래와 같이 받으면 빠르다.
tmp = map(int, input().split())
 
'''
문제를 해결하기 위해 그리디하게 생각하자
각 숫자를 해당하는 arr 2차원 리스트 인덱스에 tmp에 해당하는 인덱스 번호를 넣어준다.
1 1 2 2 3 3이면 arr 리스트 1번 인덱스에 1,2를 append 한다는 것이다
그러면 먼저 나온 번호부터 차례대로 정렬이 되게 되는데
arr의 1번 인덱스 첫번째 것과 2번 인덱스 첫번째 것의 절댓값 차를 계속 더해가면서
정답을 구해주면 된다.
설명이 어렵지만 코드를 보면 쉽게 해결 할 수 있다.
'''
arr = [[] for i in range(n + 1)]
arr[0].append(1)
arr[0].append(1)
 
idx = 1
for i in tmp:
    arr[i].append(idx)
    idx += 1
 
sum1 = 0
sum2 = 0
for i in range(1,n + 1):
    sum1 += abs(arr[i][0- arr[i - 1][0])
    sum2 += abs(arr[i][1- arr[i - 1][1])
print(sum1 + sum2)
cs

반응형