[구현] 배열돌리기, 짝지어 제거하기

1. 배열돌리기

링크 - https://www.acmicpc.net/problem/17276

import copy
import sys
input = sys.stdin.readline
t = int(input().rstrip())

#시계방향
def rotate_clock(k,arr):
    rotate_arr = copy.deepcopy(arr)
    for j in range(k):
        mid = n//2
        for i in range(n):
            rotate_arr[i][mid] = arr[i][i]
            rotate_arr[i][n-i-1]= arr[i][mid]
            rotate_arr[mid][i] = arr[n-i-1][i]
            rotate_arr[i][i] = arr[mid][i]
        arr=copy.deepcopy(rotate_arr)
    return arr
#시계방향
def rotate_counter(k,arr):
    rotate_arr = copy.deepcopy(arr)
    for j in range(k):
        mid = n//2
        for i in range(n):
            rotate_arr[mid][i] = arr[i][i]
            rotate_arr[i][i]= arr[i][mid]
            rotate_arr[i][mid] = arr[i][n-i-1]
            rotate_arr[n-i-1][i] = arr[mid][i]
        arr=copy.deepcopy(rotate_arr)
    return arr

for _ in range(t):
    n,rotate = map(int,input().rstrip().split())

    arr = []

    #배열 입력 받기
    for i in range(n):
        line = list(map(int,input().rstrip().split()))
        arr.append(line)
        
    if rotate>0:
        k = (rotate//45)
        arr = rotate_clock(k,arr)
    else:
        k = (rotate//-45)
        arr = rotate_counter(k,arr)
    
    for i in range(n):
        for j in range(n):
            print(arr[i][j],end=" ")

문제에 쓰여있는대로 구현을 하면 되는 문제였다. 계속 틀렸습니다가 나왔었는데 k=(rotate//45)%4 에서 그냥 k=(rotate//45)로 바꿔주었더니 해결됐었다.
+) 범위가 0<=d<=360이여서 나눌 필요가 없었고, 나눌거면 4가 아니라 8로 나눴어야 했다.

2. 짝지어 제거하기

def solution(s):
    stack=[]
    stack.append(s[0])
    count=1
    for i in range(1,len(s)):
        if len(stack)!=0 and stack[-1]==s[i]:
            stack.pop()
        else:
            stack.append(s[i])
    
    if len(stack)==0:
        return 1
    else:
        return 0

그대로 구현을 하려다가 스택을 사용하면 더 편할 거 같아서 스택을 이용하여 풀었다.


+한 문제 더 풀려고 했는데 시간초과가 나서 내일 풀어야겠다..
프로그래머스 - 메뉴 리뉴얼을 풀 때 쓰면 좋은 함수라고 해서 정리

추가 - Counter함수 사용법

from collections import Counter

s="hello"
print(Counter(s).most_common()) 

#[('l', 2), ('h', 1), ('e', 1), ('o', 1)]

Counter함수를 사용하면 따로 구현할 필요 없이 문자열에 있는 문자의 개수를 세어준다.

좋은 웹페이지 즐겨찾기