취뽀 기록

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

분류 전체보기 221

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

아래 조건을 만족하도록 격자를 만들어 출력하는 프로그램을 작성해보세요. 첫 번째 행과 첫 번째 열에는 모두 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 ..

[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()