취뽀 기록

#열심히 살자 #취업 #공부

Python/[코드트리] 128

[코드트리] 문자 수정 > 문자열 놀이(★)

문자열 s와 q개의 질의가 주어졌을 때 각 질의를 수행하는 프로그램을 작성해보세요. 단, 질의를 순서대로 수행해야 하며, 문자열은 질의에 따라 계속 변합니다. 질의의 종류는 다음과 같습니다. 1 a b a번째 문자와 b번째 문자를 교환한 뒤 출력합니다. 2 a b 문자 a를 전부 문자 b로 변경한 뒤 출력합니다. s, q = input().split() s = list(s) q = int(q) for _ in range(q): arr = list(input().split()) if arr[0] == '1': s[int(arr[1])-1], s[int(arr[2])-1] = s[int(arr[2])-1], s[int(arr[1])-1] if arr[0] == '2': for i in range(len(s)..

[코드트리] 격자로서의 2차원 배열 > 격자 모양 출력하기

n x n 크기의 격자의 칸 위에 m 개의 점이 놓여져 있습니다. 각 점의 크기는 해당 칸의 행 번호와 열 번호의 곱이 됩니다. 각 점의 위치에 해당하는 정보가 주어질 때, 격자의 모양을 출력하는 프로그램을 작성해보세요. 단, 행과 열의 번호는 1부터 시작됩니다. n, m = tuple(map(int, input().split())) # 2차원 배열 생성 arr = [ [0 for _ in range(n)] for _ in range(n) ] for i in range(m): r, c = tuple(map(int, input().split())) arr[r-1][c-1] = r * c # 프린트 for rows in arr: for elem in rows: print(elem, end = " ") pri..

[코드트리] 격자로서의 2차원 배열 > 격자에 점 그리기

m개의 점이 주어졌을 때 각각의 점을 n * n 크기의 격자에 번호를 표시하여 출력하는 프로그램을 작성해보세요. 점의 번호는 정보가 따로 주어지진 않고 입력된 순서대로 부여됩니다. 즉 첫 번째로 입력된 점은 1, k번째로 입력된 점은 k입니다. n, m = tuple(map(int, input().split())) placed = [ [0 for _ in range(n)] for _ in range(n) ] for i in range(m): r, c = tuple(map(int, input().split())) placed[r-1][c-1] = i+1 for rows in placed: for elem in rows: print(elem, end = " ") print() # 해설 # 2차원 배열을 구현..

[코드트리] 격자로서의 2차원 배열 > 동전이 있는 위치

n * n 크기의 격자 위에 m개의 동전이 각각 어느 위치에 있는지 주어졌을 때, 현재 격자의 상태를 출력하는 프로그램을 작성해보세요. n, m = tuple(map(int, input().split())) placed = [ [0 for _ in range(n)] for _ in range(n) ] for _ in range(m): r, c = tuple(map(int, input().split())) placed[r-1][c-1] = 1 # 출력 for rows in placed: for elem in rows: print(elem, end = " ") print() # 해설 # 2차원 배열을 구현합니다. arr = [ [0 for _ in range(10)] for _ in range(10) ] #..

[코드트리] 순서대로 채우기 > 격자로 사각형 만들기

아래 조건을 만족하도록 격자를 만들어 출력하는 프로그램을 작성해보세요. 첫 번째 행과 첫 번째 열에는 모두 1이 들어갑니다. 나머지 칸들은 바로 위의 값과 바로 왼쪽 값, 그리고 왼쪽 위의 값의 합이 되어야 합니다. 크기는 n x n 입니다. # 2차원 배열 생성 n = int(input()) arr_2d = [ [1 for _ in range(n)] for _ in range(n) ] for i in range(1, n): for j in range(1, n): arr_2d[i][j] = arr_2d[i-1][j] + arr_2d[i-1][j-1] + arr_2d[i][j-1] # 출력 for rows in arr_2d: for elem in rows: print(elem, end = " ") prin..

[코드트리] 순서대로 채우기 > 파스칼의 삼각형

행의 크기가 정수 n으로 주어집니다. 행의 크기가 n인 파스칼 삼각형을 출력하는 프로그램을 작성해보세요. 파스칼 삼각형이란 다음과 같은 형태로 나타나며, (i, j)에 적힌 숫자가 (i - 1, j - 1)에 적힌 숫자와 (i - 1, j)에 적힌 숫자의 합으로 나타납니다. n = 5일때의 예 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 n = int(input()) # 2차원 배열 생성 arr = [[1] * i for i in range(1, n+1)] for i in range(1, n): for j in range(1, i): if i == j: arr[i][j] = 1 arr[i][j] = arr[i-1][j-1] + arr[i-1][j] # 출력 for rows in arr: for ..

[코드트리] 2차원 배열과 패턴 > 대각선으로 숫자 채우기(★★★)

n * m크기의 직사각형에 숫자를 1부터 순서대로 1씩 증가시키며 왼쪽 위에서부터 시작하여 오른쪽 아래 쪽까지 다음과 같은 방향으로 숫자들을 쭉 채우는 코드를 작성해보세요. 풀이 # n, m 입력받기 n, m = map(int, input().split()) # grid 리스트 생성하여 초기값 0 할당 # n개의 행과 m개의 열로 구성됨 grid = [[0] * m for _ in range(n)] # 숫자 할당 num = 1 for i in range(n + m - 1): # 사선의 총 개수 n + m - 1번 만큼 반복 for j in range(max(0, i - m + 1), min(i + 1, n)): # 현재 사선에서 숫자를 할당할 위치 결정 # 여기서 max(0, i - m + 1)은 행의 ..

[코드트리] 2차원 배열과 패턴 > 격자 반대로 채우기(★)

n x n 크기의 격자에 정수를 채워넣으려고 합니다. 1부터 시작해서 차례대로 n2까지 채워넣는데, 다음 그림과 같이 오른쪽 아래에서 부터 위 아래 지그재그 방향으로 채워넣는 프로그램을 작성해보세요. 해설 알고리즘 # 변수 선언 및 입력 n = int(input()) answer = [ [0 for _ in range(n)] for _ in range(n) ] count = 1 # 격자를 채워줍니다. for col in range(n - 1, -1, -1): if (n - 1 - col) % 2 == 0: # 이 케이스에는 아래에서 위로 값을 채워줍니다. for row in range(n - 1, -1, -1): answer[row][col] = count count += 1 else: # 이 케이스에는..

[코드트리] 2차원 배열과 패턴 > 지그재그로 숫자 채우기(★)

n * m크기의 직사각형에 숫자를 0부터 순서대로 1씩 증가시키며 왼쪽 위에서부터 시작하여 다음과 같이 지그재그 모양으로 숫자들을 쭉 채우는 코드를 작성해보세요. # n, m 입력받기 n, m = tuple(map(int, input().split())) # 배열 선언 arr_2d = [ [0 for _ in range(m)] for _ in range(n) ] # 1씩 더해질 수 num 변수 선언 num = 0 for col in range(m): if col % 2 == 0: # 짝수 열 for row in range(n): arr_2d[row][col] = num num += 1 else: # 홀수 열 for row in range(n-1, -1, -1): # 홀수 열에서는 거꾸로 할당되기 때문 a..

[코드트리] 새로운 2차원 배열의 선언 > 두 개의 격자 비교하기

n x m 크기의 2차원 격자가 두 개 주어지고, 새로운 2차원 격자를 만들려고 합니다. 주어진 두 격자에서 같은 위치에 존재하는 숫자의 값이 같다면 0, 그렇지 않다면 1을 적어주려 합니다. 새로운 2차원 격자를 만들어 이를 해결하는 프로그램을 작성해보세요. 문제풀이 로직 1. n, m을 입력 받는다. 2. 2차원 배열 2개를 입력 받는다. 3. 값을 비교해서 0과 1 원소를 넣을 2차원 배열을 생성한다.(grid 배열) 4. 원소를 비교해서 같으면 grid 배열에 0, 다르면 1 원소를 입력하여 출력 # n, m을 입력받습니다. n, m = tuple(map(int, input().split())) # 첫 번째 2차원 배열을 구현해 정수를 입력받습니다. arr_1 = [ list(map(int, in..