본문 바로가기

코딩 테스트/Python_백준88

[백준/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.