본문 바로가기

코딩테스트166

[ 파이썬(python) ] 2차원 행렬 시계방향으로 한 칸씩 회전하기 📍 2차원 행렬 시계방향으로 한 칸씩 회전하기 카카오 코딩 테스트를 보다가 2차원 행렬을 시계방향으로 회전하라길래 저번에 배열돌리기 3 문제를 풀어본 경험이 있어 풀 수 있을 것 같았는데 못 풀었다. 😂 😂 눈물을 머금으며 다음엔 꼭 풀겠다는 취지로 글을 남긴다. 이번에는 90도 회전이 아닌 시계방향 혹은 반시계방향으로 한 칸씩 이동하는 방법을 배워보려고 한다. 이때 전체 범위를 회전하지 말고 주어진 범위 내에서 테두리의 값만 이동하자. 다음과 같이 5*5행렬이 있을 때 파란색 빗금 친 범위만 시계방향으로 바꾸려고 한다. 처음 로직을 구현할 때 dx, dy를 이용해서 옮길 좌표를 우측으로 한 칸 혹은 아래쪽으로 한 칸 이렇게 짜는 줄 알았더니 dx, dy는 사용하지 않고, 범위를 설정해서 row+1 혹은.. 2021. 7. 15.
[ 파이썬(python) ] 백준 18110 - solved.ac 📍 백준 18110 - solved.ac 백준 18110 - solved.ac 💡 나의 풀이 단순 round 함수로만 풀었더니 오답판정이 나온 문제였다. 난이도가 딱히 어렵지 않은데 왜 실버 4인가 했더니 부동소수점을 이해하고 있어야만 문제를 풀 수 있어서였다. 절사평균과 반올림에 관해 작성한 이전글을 보면 조금이나마 이해 할 수 있다. 의견이 없는 경우와 있는 경우로 나누어 푼다. 없는 경우는 print(0)을 출력한다. 있는 경우는 절사평균 -> 정렬 -> 슬라이싱의 과정을 거친다. 이때, round 함수는 사사오입 반올림이 적용되게 만든다. # 나의 코드 import sys input = sys.stdin.readline def round2(num): return int(num) + (1 if nu.. 2021. 7. 13.
[ 파이썬(python) ] 백준 17952 - 과제는 끝나지 않아! 📍 백준 17952 - 과제는 끝나지 않아! 문제: 백준 17952 - 과제는 끝나지 않아! 💡 나의 풀이 flag[0]이 0인 경우와 1인 경우로 나누어 작성했다. flag[0]가 0일 때 stack이 존재하면 맨 뒤에부터 시간을 확인하여 0인 경우에는 score에 추가하고 0이 아닌경우에는 시간이 흐르게 -= 1을 해준다. flag[0]가 1이면, 과제를 받자마자 시작하기 때문에 -1을 해준 상태로 넣는다. 그런데 이런 방법으로 풀지 않더라도 다른 코드를 보니까 코드를 반절로 줄일 수 있었다. 바로 시간과 점수 변수를 각각 선언하고 계산하는 방식이다. flag[0]이 1인 경우만 고려한다 만약, flag[0]이 1이라면 score와 time에 각각 해당 값을 넣는다. time에 값이 남으면 time .. 2021. 7. 12.
[ 파이썬(python) ] 백준 20001 - 고무오리 디버깅 📍 백준 20001 - 고무오리 디버깅 문제: 백준 20001 - 고무오리 디버깅 💡 나의 풀이 고무오리를 이용해서 푸는 귀여운 문제다. 그런데 입력이 숫자가 아닌 문자여서 입력 횟수가 많으면 어쩌지(?)라는 생각을 잠깐 했으나 python으로 실행시간이 72m/s인것으로 보아 많지 않은 것 같다.(문제에 입력 범위는 따로 명시되어있지 않았다.) 주의할 점은 stack이 없는 경우에 고무오리가 들어오면 두 문제를 추가해야 한다. stack = [] while True: s = input() if s == '문제': stack.append(1) elif s == '고무오리': if not stack: stack.append(1) stack.append(1) else: stack.pop() elif s ==.. 2021. 7. 12.
[ 파이썬(python) ] 백준 2493 - 탑 📍 백준 2493 - 탑 문제: 백준 2493 - 탑 💡 나의 풀이 스택을 활용하면 되는 문제인데 머릿속으로는 단계별로 생각이 잘 됐는데 코드로 구현하려니까 쉽지 않았다. 우선 범위가 500,000이기 때문에 이중 반복문을 사용하면 최대 250,000,000,000까지임을 명심해야 한다. 여기서 의문점은 성공코드와 실패 코드의 시간 복잡도의 차이는 (index, slicing)의 차이인것 같은데 왜 시간초과가 나는지 잘 모르겠다.(고수님들 댓글부탁드립니다 :)) --- [ 21. 7. 13. ] 백준에 시간초과 관련하여 질문을 남겼는데 @djm03178님께서 좋은 답변을 해주셨다. 결론적으로 시간복잡도는 다음과 같다. 1. 성공코드(O(N)): 각 원소가 스택에 들어가고 나오는 연산이 한 번씩만 수행된다.. 2021. 7. 9.