취뽀 기록

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

Python 185

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

행의 크기가 정수 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 ..

[python] 2차원 리스트 사용하기

리스트 2개를 사용하면 2차원 리스트가 된다. 행과 열 개념이라고 생각하면 된다. 2차원 리스트를 생성해보자 a = [[10, 20],[30, 40],[50, 60]] a에 있는 원소를 출력하려면 for i in a: for j in i: print(j) ------------------------------------------- 10 20 30 40 50 60 2개의 리스트를 사용하기 때문에 2개의 for문이 필요하다. 파이썬에서는 이렇게 간략하게 원소 출력도 가능하다. for x, y in a: print(x, y) ---------------------------------------------------------- 10 20 30 40 50 60 이번엔 for문을 이용해서 비어있는 2차원 리스..

[프로그래머스] 영어 끝말잇기

문제 설명 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다. 이전에 등장했던 단어는 사용할 수 없습니다. 한 글자인 단어는 인정되지 않습니다. 다음은 3명이 끝말잇기를 하는 상황을 나타냅니다. tank → kick → know → wheel → land → dream → mother → robot → tank 위 끝말잇기는 다음과 같이 진행됩니다. 1번 사람이 자신의 첫 번째 차례에 tank를 말합니다. 2번 사람이 자신의 첫 번째 차례에 ..

[프로그래머스] [python] 시저 암호

문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. def solution(s, n): s = list(s) # 리스트로 변환 for i in range(len(s)): # 아스키코드 a ~ z 26개 # 소문자일 때 if s[i].is..

[코드트리] 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..

[python] 2차원 배열과 for문

2차원 배열에서 홀수번째 행에서는 우측으로 이동하며 숫자를 적고, 짝수번째 행에 대해서는 좌측으로 이동하며 숫자를 적는 방법 2차원 배열 생성 홀수 행, 짝수 행에 대해 원소 지정 원소 프린트 n = 4 arr_2d = [ [0 for _ in range(n)] for _ in range(n) ] num = 1 for i in range(n): if i % 2 == 0: for j in range(n): arr_2d[i][j] = num num += 1 else: for j in range(n - 1, -1, -1): arr_2d[i][j] = num num += 1 # 출력 for row in arr_2d: for elem in row: print(elem, end=" ") print()

[코드트리] 새로운 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..