본문 바로가기

전체 글

(72)
프로그래머스 - 두 큐 합 같게 만들기(Python) 카카오 인턴쉽 문제답게 힘들었다. 코드를 보면서 설명하겠다.https://school.programmers.co.kr/learn/courses/30/lessons/118667?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr from collections import dequedef solution(queue1, queue2): q1 = deque(queue1) q2 = deque(queue2) total = sum(q1) + sum(q2) goal = total // 2 for x in q1: if x > goal: re..
프로그래머스 - 숫자 변환하기(Python) 처음에는 재귀방식으로 진행을 하였다.다만 이럴 경우 중복된 중간 결과가 나오기 때문에 낭비가 심해지게 된다.이를 해결하기 위해 BFS 방식을 채택해 사용하였다. 파이썬은 따로 Queue라는 알고리즘을 안 쓰고 Deque로 쓰는 게 낫다는 것 같았다.다만 Deque이기 때문에 append를 통해 오른쪽에 추가했다면 popleft로 왼쪽의 값을 꺼내 Queue의 선입선출을 자체적으로 구현해야 한다... 그리고 set은 중복된 값을 거부하기 때문에 visit 즉, 중복된 중간 결과를 걸러내기엔 최적의 자료구조이다.중복 결과를 걸러주고, 목표 숫자인 y보다 커진 경우는 그 이상으로 무엇을 하던 y에 접근할 수 없기 때문에 버려줘 낭비를 줄여 시간 초과가 나오지 않고 해결할 수 있다.https://school.p..
프로그래머스 - 뒤에 있는 큰 수 찾기(Python) 문제 자체는 어렵지 않았다. 그저 자신의 뒤쪽에 가깝게 위치한 자신보다 큰 수를 찾는 문제이니 말이다.2중 for문을 쓴다면 간단하겠지만 레벨 2쯤 되면 대충 봐도 이 방법은 시간 초과로 통과 못 할 게 뻔하다.이에 나는 Stack을 활용하는 방안을 생각했다. 1. 일단 answer에 -1을 채운다. 2. 누군가 들어갈 때 stack의 맨 위를 보면서 자신보다 작은 애들은 쫓아내고 자신의 값으로 덮어씌워준다. 바로 그냥 테스트 케이스 1로 보자면 stack : 2 answer : -1 -1 -1 -1처음에 2는 자신보다 작은 친구가 존재하지 않기 때문에 무혈입성한다. stack : 3answer : 3 -1 -1 -1이후 3 형님이 오면서 2는 쫓겨나고 3 형님을 세긴다. stack : 3 3answer..
프로그래머스 - 롤케이크 자르기(Python) https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr - for문을 통해 케이크를 하나씩 잘라보면서 종류를 따지기 위해 Set을 통해 종류만 취해서 개수를 비교하였다.def solution(topping): answer = 0 for i in range(1, len(topping)): meSet = set(topping[:i]) broSet = set(topping[i:]) if len(meSet) == len(broSet): ..
프로그래머스 - n^2 배열 자르기(Python) 배열의 크기가 커진다고 숫자를 배열하는 방법이 달라지는 것은 아니기 때문에 테스트케이스 1번만 봐도 모든 문제를 해결할 수 있다숫자번호1121, 3, 432, 5, 6, 7, 8 이렇게 번호를 부여받게 되는데, 잘 보게 되면 배열의 크기 n으로 번호를 나눈 값의 몫이나 나머지가 (숫자 -1) 형태로 되어있다. 대놓고 규칙 찾기 문제이기 때문에 이것만 찾는다면 이제는 구현 뿐이다.https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr def solution(n, left, right): answ..
프로그래머스 - 귤 고르기(Python) 종류 별로 몇 개가 있는가? 를 묻는다면 빠르고 쉬운 건 Map이다.하지만 굳이 클래스를 익혀보기 위해 클래스를 써서 구현을 했다. 맞긴 맞았지만 시간초과가 났다...https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 시간초과class gyul: def __init__(self, size): self.size = size self.cnt = 1 def getter(self): return self.size def add(sel..
프로그래머스 - 과제 진행하기(Python) 알고리즘을 나눈다면 구현 알고리즘일 것 같다. 문제를 그대로 구현해 주면 되는 문제이지만, 약간의 팁(?)이라면 걸리는 시간 하고, 시작 시간이 문자열로 되어 있어 귀찮으니 전부 int로 바꿔주자 12:40은 12*60+40 = 760으로 어차피 00:00에서 760분이 지난 시점이기 때문에 다른 것들도 동일하게 바꿔준다면 우리가 아는 시간 체계와 다를 게 없다. 또 스케줄이기 때문에 시간을 기준으로 오름차순을 해주면 편하겠지?https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr def sol..
SQL- 조건에 맞는 사용자 정보 조회하기 SUBSTR(TLNO, 1, 3) || '-' || SUBSTR(TLNO, 4, 4) || '-' || SUBSTR(TLNO, 8, 4) AS "전화번호"이 구문을 몰라 찾아보면서 문제를 해결했다. SUBSTR은 substring으로 문자열을 자르는 함수가 맞으며 인덱스가 0부터 시작하지 않는다는 점만 유의한다면1번 째 String부터 세서 3자리로 짜르고 "||"는 연결 연산자로 자른 문자열과 '-'을 연결하는 역할을 하게된다.이런 식으로 제일 어려운 난관이라고 생각한 전화번호만 클리어 해준다면 어렵지 않게 해결될 것이다.https://school.programmers.co.kr/learn/courses/30/lessons/164670 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total So..