본문 바로가기

알고리즘 문제풀이/프로그래머스 Lv216

[프로그래머스 Lv2] 행렬 테두리 회전하기:일정한 상수 이전의 값 사용 (구현, 스택, 행렬 값 회전) 프로그래머스 Lv2. 행렬 테두리 회전하기 rows x columns 크기인 행렬이 있습니다. 행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다. 이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다. 각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다. x1 행 y1 열부터 x2 행 y2 열까지의 영역에 해당하는 직사각형에서 테두리에 있는 숫자들을 한 칸씩 시계방향으로 회전합니다. 다음은 6 x 6 크기 행렬의 예시입니다. 이 행렬에 (2, 2, 5, 4) 회전을 적용하면, 아래 그림과 같이 2행 2열부터 5행 4열까지 영역의 테두리가 시계방향으로 회전합니다. 이때, .. 2023. 9. 12.
[프로그래머스 Lv2] 수식 최대화 (구현, 연산자 순서) [카카오 인턴] 수식 최대화 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > .. 2023. 9. 12.
프로그래머스 LV2 # 가장 중요한 것: 변수에 내가 원하는 값이 제대로 들어가고 있는지 먼저 테스트하는 것. # 이 부분을 빨리 캐치하지 못하면 로직을 제대로 짜고도 '왜 안나오지'만 반복하게 된다. from collections import deque def solution(q1, q2): # if (sum(q1) + sum(q2)) % 2 != 0: return -1 if sum(q1) == sum(q2) : return 0 # n = len(q1) q1 = deque(q1) q2 = deque(q2) sum1 = sum(q1) sum2 = sum(q2) cnt = 0 while sum1 != sum2: if cnt >= 4*n: return -1 if sum1 < sum2: v = q2.popleft() q1.app.. 2023. 9. 7.
[프로그래머스 lv2] 124 나라의 숫자 일단 5*10^7 이기 때문에 logn 필요해서 힌트 얻기 3진법과 유사하지만 나머지가 0이 아니라 3이 된다는 게 다르다 따라서 진수 계산을 응용하되 이 특징을 살려서 구현해야 한다. # 내 풀이(틀린풀이) def sosu(n): s = '' while n>0: s += str(n%3) n = n//3 return s[::-1] def solution(n): res = [int(x) for x in sosu(n)] for i, d in enumerate(sosu(n)): if d == '0': res[i] = 3 res[i-1] = res[i-1]-1 res = str(int(''.join(map(str,res)).replace('3','4'))) return res # 내 풀이2(정답풀이) # 이진변.. 2023. 7. 31.