알고리즘(43)
-
프로그래머스 카펫 [ Python ]
문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow 가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 - 갈색 격자의 수 brown 은 8 이상 5,000 이하인 자연수 입니다. - 노란색 격자의 수 yellow 는 1 이상 2,000,000 이하인 자연수 입니다. - 카펫의 가로 길이는 세로 길이와 같거..
2023.07.09 -
괄호 [ Python ] [ 백준 : 9012 ]
풀이 및 회고 오랜만에 괄호문제를 풀었는데 생각보다 손이 잘 나가지 않았다. 머리로는 알고있는데 구현이 잘 안되는 느낌을 많이 받았다. 알고리즘 문제를 풀때 머리로 알고있는 느낌을 주석으로 더 많이 자세히 적으면서 풀어야겠다. 그리고 NO 를 출력해야되는데 No 를 출력문에 써놔서 여러번 틀렸다.. ㅠ 우선 문제는 괄호를 어떻게 검증할 것이냐는건데 스택을 활용해 검증을 한다. 빈 스택에 여는 괄호면 값을 넣고 닫는 괄호일 경우 여는 괄호를 제거해 주는데 만약 스택에 값이 없다면 NO 를 출력하고 종료한다. 최종적으로 루프가 끝난 후 스택에 값이 있으면 NO 를 출력하고 값이 없다면 YES 를 출력한다. # 괄호 # 테스트를 몇 번 할지 입력받는다. # 반복문을 선언해 괄호를 넣는다. # 괄호를 저장할 리..
2023.06.01 -
수학은 비대면 강의입니다 [ Python ] [ 백준 : 19532 ]
풀이 및 회고 처음에 수학문제여서 좌절했었던 문제였으나 문제를 30분 동안 지켜보고 곱씹은 결과 반복문을 돌려보기로 마음먹었다. -999, 부터 999 까지로 설정해서 했는데 틀렸습니다. 가 발생했다 왜인지 모르고 있다가 -999 , 1000 으로 바꿔주니 무난하게 통과할 수 있었다. 굳굳 # 수학은 비대면 강의입니다 a, b, c, d, e, f = map(int, input().split()) # ax + by = c # dx + ey = f for i in range(-999, 1000): for j in range(-999, 1000): if (a * i) + (b * j) == c and (d * i) + (e * j) == f: print(i, j) break
2023.05.31 -
체스 [ Python ] [ 백준 : 17122 ]
풀이 및 회고 문제를 5트 이상 시도한건 처음이다. 무엇보다 ord 를 알았을때 상실감은 컸다. 여러 파이썬 문법적으로 배운게 있었던 문제였으나 정답을 맞추고 다른사람의 풀이를 보았을때 허탈했다. 모든 과정을 코드에올린다. 하하하하. # 체스 # 1. 8x8 의 딕셔너리를 만든다. # 2. 딕셔너리의 키값 A #2차원 배열 만들자 !!!! # [[0] * 8] * 8 이렇게 중첩된 배열을 선언할 경우 얕은 복사가 일어나므로 하나만바꿔도 전부다 바꿘디. # list(n) # ******* 문자열을 리스트로 바꾸면 쉽게 분할할 수 있다. # 런타임 에러 코드 ============================ # board = [[0 for _ in range(8)] for _ in range(8)] # f..
2023.05.31 -
파도반 수열 [ Python ] [ 백준 : 9461 ]
풀이 및 회고 어떻게 오늘 푸는 문제들은 죄다 수학문제인것 같다. 정신이 나가버릴듯. 문제를 30~40분동안 곱씹어도 코드를 입력해 나갈 수가 없었다. 이러다가 수학문제 혐오증이 생길것만 같았다. 이전 피보나치 문제와 마찬가지로 정답을 한번 훝어보고 구현해보는 식으로 진행했다. 규칙성을 보았을때 어떻게 이문제를 보고 이런 규칙성을 뚝딱 찾을 수 있나 싶었다. 코드는 짧고 단순해 보이나 그 안의 내용은 쉽지 않은 느낌이다. 그래도 화이팅 # 파도반 수열 import sys T = int(sys.stdin.readline()) munyeol = [0 for i in range(101)] munyeol[0] = 1 munyeol[1] = 1 munyeol[2] = 1 for i in range(T): num ..
2023.05.30 -
최대공약수와 최소공배수 [ Python ] [ 백준 : 2609 ]
풀이 및 회고 사실 오늘 수학관련 문제로 많이 힘들었기에 기분전환으로 쉬운문제를 풀기로 하였다. 최대공약수는 math 라이브러리의 gcd 를 통해 구할 수 있고, 최소공배수는 math 라이브러리의 lcm 으로 구할 수 있다. 하지만 쉬운문제를 푼다고 기분이 나아지지는 않더라.. 오히려 허무했고 다음에 기분전환할때는 생각할 수 있는 문제를 풀어야겠다. 약간 자료구조 관련된걸로 ㅇㅇ # 최대공약수와 최소공배수 import math n,m = map(int, input().split()) print(math.gcd(n, m)) print(math.lcm(n, m))
2023.05.30