Python/CoTe 70

[programmers] 올바른 괄호

https://programmers.co.kr/learn/courses/30/lessons/12909# 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 접근법 단순히 괄호 쌍을 확인하는 문제이므로 개수 세는 방식으로 풀이가 가능하다 1. '(' 라면 +1 2. ')' 라면 -1 3. 괄호는 항상 '(' 부터 시작 하기 때문에 ')'가 먼저 시작하면 음수가 된다. -> 합이 음수가 되는 경우 무조건 false 4. '(' 와 ')'의 개수만 같다면 합은 0이 되고 올..

Python/CoTe 2022.03.28

[programmers] 1차 캐시

https://programmers.co.kr/learn/courses/30/lessons/17680 문제의 조건에 따라 Least Recently Used 순서대로 없앤다. 즉, 가장 처음에 들어온 도시인 Seoul을 제거하고 newyork를 맨 마지막에 삽입한다. -> 이렇게 해서 가장 최근에 저장한 도시는 new york이 되고, 저장한지 가장 오래된 도시는 pangyo가 된다. -> newyork은 miss cache이므로 실행시간 +5 되어 총 20만큼 실행됐다. 3. 그 다음 도시인 'LA'를 cache에 삽입할 때 역시 cache공간이 부족하므로 가장 오래된 pangyo를 빼고 맨 마지막에 LA를 삽입해야한다. 위와 같은 과정을 반복하여 실행시간을 구하는 것이 문제의 목표이다. from co..

Python/CoTe 2022.03.27

[programmers] 전력망 둘로 나누기

https://programmers.co.kr/learn/courses/30/lessons/86971# 코딩테스트 연습 - 전력망을 둘로 나누기 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 접근법 서로소 집합 분리! 0. 연결선을 돌아가면서 하나씩 끊었을 때, 두 개의 그래프로 나뉘어진다. 1. 연결된 그래프 끼리 나누어 묶어야 한다. ->집합으로 나누자 2. 각 송전탑이 어느 집합에 속하는지 찾기 위해서 연결된 가장 작은 번호의 송전탑을 우두머리 송전탑이라고 지정 3. 같은 우두머리를 같은 송전탑이면 같은 집합 4. 각 집합에 있는 원소 개수 차..

Python/CoTe 2022.03.26

[programmers] 행렬 테두리 회전하기

https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 주의!! 실제 행렬과 리스트의 원소 접근법 바뀜 주의 접근법 0. matrix 행렬 초기화 1. 변환 해야하는 테두리 정보의 좌표값을 moves 리스트에 저장한다. -> 시계 방향으로 회전하므로, 시계 방향 순서대로 저장한다. (난 이 부분이 조금 어려웠다) 2. moves 순서대로 다음 값과 회전한다. -> tmp 변수와 now (현재 위치의..

Python/CoTe 2022.03.25

[programmers] 멀쩡한 사각형 , 시간 초과 이유+예외처리

https://programmers.co.kr/learn/courses/30/lessons/62048# 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 문제 접근 방법 생각하는 시간보다 나눗셈으로 인한 시간 초과 + 예외처리 생각하는게 더 오래 걸렸던 문제 접근법 처음에는 가로 세로 비율에 따라 더해 가는 수가 다를 줄 알았다. ->패턴 없음 !직선의 방정식 문제라고 생각하면 된다 만약 1을 직선의 방정식에 넣고 2.2가 나왔다면, 2.2가 속하는 박스는 활용하지 못한다. 즉, 소수..

Python/CoTe 2022.03.25

[programmers] 주차 요금 계산

https://programmers.co.kr/learn/courses/30/lessons/92341 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 접근법 1. 차 별로 입출차 내역을 묶자 -> 딕셔너리 이용 2. 차 별로 생성된 딕셔너리를 돌면서 총 시간을 계산 -> IN-OUT 이 모두 이루어졌는지 확인하기 위해 flag를 사용..

Python/CoTe 2022.03.25

[programmers] 점프와 순간이동

https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 접근법 건전지 사용을 줄이기 위해서 x2를 할 수 있으면 하는게 좋다! -> n부터 나누기 2를 해서 나머지가 0이면 순간이동을 하고 -> 나누기 2를 해서 나머지가 1인 경우에만 1칸씩 이동하여 1만큼 건전지를 사용한다. 즉, 2로 나누어 떨어지지 않는 경우(그림에서는 노란색 표시)만 count 하자! def solution(n): an..

Python/CoTe 2022.03.21

[programmers] 구명보트

https://programmers.co.kr/learn/courses/30/lessons/42885# 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 접근법 주의 사항: 정렬한 다음에 최솟값부터 더하는 방식으로 하면 항상 최소 구명보트 이용을 만족하지 못한다. 반례 [80,90,20,30,40,50,60], 100 이 주어졌을 때, 최솟값을 더하는 방식으로 하면 20,30,40/50/60/80/90 -> 총 5개의 구명 보트를 써야 한다. 그러나 실제로 최소 구명 보트는 20,80..

Python/CoTe 2022.03.20

[programmers] 삼각 달팽이

https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 알 것 같지만 쉽게 생각하기 어려웠던 문제! 접근법 1. 삼각형을 이용해야 한다. 삼각형이니까 3번씩 반복되는 형태 임을 파악하자 -> 처음 위에서 아래로 숫자를 입력하고(0번 방향), 왼쪽에서 오른쪽으로 숫자 입력(1번 방향), 아래에서 위로 숫자 입력(2번 방향)이 삼각형이 다 채워질때까지 반복된다. 2. 이러한 과정은 그림에서 알 수 있듯이 n번만큼 반복됨을 발견..

Python/CoTe 2022.03.20

[programmers] 예상 대진표

https://programmers.co.kr/learn/courses/30/lessons/12985# 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr 접근 방법 n은 2의 지수승이니까 n/2를 기준으로 a와 b가 왼쪽이냐 오른쪽이냐 구하고, 다른 쪽에 있다면 그 번호가 몇 번이든 2**answer == n 인 answer만큼 무조건 비교해야 한다고 생각. 예를 들어, n=16이고 a가 1~8이고, b가 9~16 사이의 값이라면 무조건 4번은 비교. 마찬가지로, n=16이고 a가 1~..

Python/CoTe 2022.03.14
728x90