본문 바로가기

리스트10

[Python] 배열에 기록하여 문제 풀기 배열의 적절한 위치에 원하는 값을 기록하여 문제를 해결한다. 1. 시간과 위치 - A와 B가 1초에 1m씩 움직인다. - A는 5초 동안 앞으로 갔다가 4초 동안 뒤로 가고 3초 동안 앞으로 간다. - B는 3초 동안 뒤로 갔다가 7초 동안 앞으로 가고 2초 동안 뒤로 간다. - A와 B가 만나게 되는 지점은 몇 초일까? - A와 B가 만나기 위해서는 시간과 위치가 같아지는 시점이 생겨야 한다. - 위치만 표시하게 되면 A와 B가 언제 만나는지 알기 쉽지 않다. - 다른 방법으로는 1초 단위로 A와 B의 위치를 동시에 움직이며 시뮬레이션을 한다. - 하지만 시간에 따라 어느 방향으로 이동하는 것을 판단해야 하므로 쉽지 않다. - 따라서 A, B를 개별적으로 1초 단위로 어느 위치에 있는지 배열에 기록하며.. 2023. 12. 18.
[Python] 정렬 - 숫자, 문자열, 문자열 리스트, 오름차순 및 내림차순 1. 숫자 - sort() : 리스트의 원소를 오름차순으로 정렬한다. arr=[15,64,32,78,36,98,22] arr.sort() print(arr) 결과 [15, 22, 32, 36, 64, 78, 98] - 내림차순으로 정렬 : sort(reverse=True) arr=[15,64,32,78,36,98,22] arr.sort(reverse=True) print(arr) 결과 [98, 78, 64, 36, 32, 22, 15] - sorted() : 정렬된 리스트를 반환한다. - 정렬 후의 리스트를 변수에 할당해야 한다. arr=[15,64,32,78,36,98,22] sort_arr=sorted(arr) print(sort_arr) 결과 [15, 22, 32, 36, 64, 78, 98] - .. 2023. 1. 29.
2차원 배열 활용 2 Q) 대각선으로 숫자 채우기 - 자연수 n, m 입력 - n*m 크기의 배열에 숫자를 1부터 1씩 증가시켜 대각선 방향으로 숫자를 채우기 결과 >> 3 4 1 2 4 7 3 5 8 10 6 9 11 12 n,m=map(int,input().split()) arr=[[0 for _ in range(m)] for _ in range(n)] num=1 for i in range(m): j=0 while True: arr[j][i]=num num+=1 j+=1 i-=1 if im-1 or jn-1: break for i in range(1,n): j=m-1 while True: arr[i][j]=num num+=1 i+=1 j-=1 if in-1 or jm-1: break for i in arr: for j i.. 2022. 11. 3.
2차원 배열 활용 1. 0으로 초기화된 2차원 배열 생성 - list comprehension 이용해서 n*m 크기의 배열 생성 n,m=map(int,input().split()) arr=[[0 for _ in range(m)] for _ in range(n)] print(arr) 결과 >> 3 4 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 2. 2차원 배열 출력 - 중첩 반복문을 활용하여 range를 사용 arr=[[1,2,3,4], [5,6,7,8], [9,10,11,12]] for i in range(3): for j in range(4): print(arr[i][j],end=' ') print() 결과 1 2 3 4 5 6 7 8 9 10 11 12 - range 없이 리스트 내 .. 2022. 10. 28.
2차원 배열 1. 2차원 배열 입력 - n개의 줄에 걸쳐 각 n개의 숫자를 공백을 사이에 두고 입력. - 행 단위로 합을 구할 때 n=int(input()) for _ in range(n): arr=list(map(int,input().split())) print(sum(arr)) 결과 >> 4 >> 1 2 3 4 10 >> 5 6 7 8 26 >> 9 10 11 12 42 >> 13 14 15 16 58 - 위와 같은 방법으로는 행 단위로 합을 구할 수 있지만 열 단위로 합을 구하는 것은 불가능. - 열 단위의 합을 구하기 위해서 2차원 배열을 사용 [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]] - 각 원소는 행을 의미 n=int(input()) arr2=[] for .. 2022. 10. 26.
리스트 최대 최소 2 Q) 가장 왼쪽에 있는 최댓값 - n개의 숫자 입력 - 최댓값 위치를 출력 - 최댓값이 여러 개면 가장 왼쪽에 있는 최댓값 위치 출력 - 구한 최댓값의 위치보다 왼쪽에 있는 숫자들 중 최댓값 위치 출력 - 첫 번째 원소가 최댓값이 되어 1을 출력하면 프로그램 종료 n=int(input()) arr=list(map(int,input().split())) arr2=[1] j=0 for i in range(1,n): if arr[i]>arr[arr2[j]-1]: arr2.append(i+1) j+=1 for i in arr2[::-1]: print(i,end=' ') - 거꾸로 생각해보기 - 입력한 수들을 하나씩 비교하여 최댓값 갱신하는 문제와 같음 - arr2 : 답이 될 리스트 (마지막 출력 시 거꾸로 출.. 2022. 10. 25.