전체 글165 [백준/Python] 11005번 진법 변환2 문제 ■ 11005번 진법 변환2 문제 ■ 코드 풀이 코드 설명에 앞서, 진법 변환에 대해 잘 모르시는 분들께서는 아래 잘 설명된 글이 있으니 먼저 확인해 주시고 오시면 도움이 되실 것 같습니다. 진법 변환에 대해 이해하셨다면, 코드 자체는 단순합니다. 입력받은 10진법의 수를 변경하고자 하는 진법 수로 나눕니다. 나눈 나머지는 result에 string type으로 저장하고 나눈 몫을 입력받은 값 N에 덮어씁니다. 이 과정을 N이 진법 수 보다 작거나 같을 때 가지 반복해 주면 됩니다. 주의할 점은 while문이 종료된 이후 진법 수 보다 작아진 N을 result에 추가로 더해줘야 한다는 점과 result 결과를 역순으로 출력해줘야 한다는 점이겠네요. N,B = list(map(int, input().spl.. 2023. 4. 6. [백준/Python] 2745번 진법 변환 문제 ■ 2745번 진법 변환 문제 ■ 코드 풀이 이 문제를 풀지 못하셨다면 대부분은 진법을 어떻게 변환하는지 모르셨기 때문일 겁니다. 특정 진법의 수를 10진법으로 변환하는 방법은 의외로 단순합니다. 각 자리의 숫자에 진법의 거듭 제곱을 곱해주고 이를 모두 더해주면 됩니다. 몇 가지를 예시로 들어보겠습니다. [예시1] 10111(2) = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 23 [예시2 ] ZZZZZ(36) = 35*36^4 + 35*36^3 35*36^2 + 35*36^1 + 35*36^0 = 60,466,175 이제는 코드로 들어가보겠습니다. 최대 36진법까지 가능한 모든 숫자를 표현하는 alphabet_list를 선언합니다. 그리고 각 자리의 숫자가 10진법으로 몇인.. 2023. 4. 5. [백준/Python] 2563번 색종이 문제 ■ 2563번 색종이 문제 ■ 코드 풀이 처음에는 면적을 어떻게 구해야 하나 고민을 정말 많이 했습니다. 알고 보니 정말 간단하게 풀 수 있더군요. 아이디어는 심플합니다. 하얀 색종이를 가로 1, 세로 1인 작은 정사각형이 100개가 이루어졌다고 가정합시다. 마치 사진을 구성하는 픽셀(Pixel)처럼요. 이를 white_paper라는 2차원 배열로 구현하고 값을 0으로 초기화합니다. 이후 입력받은 x, y를 기준으로 가로로 10칸, 세로로 10칸을 1로 채워줍니다. 이후에 값이 1인 칸의 개수만 count 하면 면적이 나옵니다. 정말 멋진 아이디어 아닌가요? 저는 이 풀이법을 보면서 역시 훌륭한 솔루션은 단순한 아이디어에서 출발한다는 것을 또 한 번 느꼈습니다. white_paper = [[0 for j.. 2023. 4. 4. [백준/Python] 10798번 세로읽기 ■ 10798번 세로 읽기 ■ 코드 풀이 아이디어는 다음과 같습니다. 입력을 5번 받고, 입력받는 단어의 최대 개수는 15개라고 문제에서 제시했으니, 높이가 5이고 길이가 15인 2차원 list를 만듭니다. 처음 default 값은 별표(*)로 설정합니다. 그리고 enumerate 함수를 활용하여 입력받은 단어를 2차원 배열에 하나씩 넣어줍니다. 이후 출력을 할 때는 세로로 읽어야 하므로 column index부터 for loop를 돌립니다. 단어가 없다면 2차원 list 값에는 별표(*)가 있을 테니, 값이 별표(*)라면 출력을 skip 하는 조건문을 넣어줍니다. word_array = [['*' for j in range(15)]for i in range(5)] for i in range(5): wo.. 2023. 4. 3. [백준/Python] 2566번 최댓값 문제 ■ 2566번 최댓값 문제 ■ 코드 풀이 아이디어는 간단합니다. 입력은 9번으로 고정되어 있습니다. 처음 입력을 받을 때는 입력값 중 최댓값과 최댓값의 index를 각각 row와 col 변수에 1을 더하여 저장(1행, 1열부터 시작되므로)합니다. 이후 2번째 입력부터는 입력된 값 중에서 앞서 저장된 최댓값보다 큰 값이 있을 때만 최댓값과 그 index를 갱신합니다. for i in range(9): temp = list(map(int, input().split())) if i == 0: max_value = max(temp) row = i + 1 col = temp.index(max_value) + 1 else: if max_value < max(temp): max_value = max(temp) row.. 2023. 4. 2. [백준/Python] 2738번 행렬 덧셈 문제 ■ 2738번 행렬 덧셈 문제 ■ 코드 풀이 크게 어렵지 않은 문제입니다. 우선 행렬 A와 B의 row 개수는 N으로 동일하므로 입력을 2*N번만큼 한 번에 받아서 temp라는 list에 append 합니다. 그리고 다시 for loop를 돌면서 list의 element-wise 덧셈을 실행하는 함수를 실행(map) 합니다. 출력은 end 옵션을 활용하고 한 줄의 연산이 끝나면 print()로 줄 바꿈 효과를 줍니다. import sys def Add_elementwise(elements): x, y = elements return x+y N,M = map(int, sys.stdin.readline().split()) temp = [] for i in range(2*N): temp.append(list(.. 2023. 4. 1. 이전 1 ··· 17 18 19 20 21 22 23 ··· 28 다음