본문 바로가기

PS

(18)
[programmers] 야근 지수 문제 - Python https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 얼탱이 없이 풀어놓고 왜 안되나 생각했던 문제다. works 의 남은 값들이 모두 같을 때 가장 지수가 낮다는 것은 금방 알 수 있었다. 이제 다음과 같은 얼탱이 없는 풀이를 제시했다. def solution(n, works): total = sum(works) if n >= total: return 0 total -= n Q, R = total // len(works), total % len(w..
[programmers] 튜플 문제 - Python https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2019 카카오 개발자 겨울 인터십 기출문제라고 한다. 풀기는 풀었는데 되게 불편하게 풀었다. 풀고도 이렇게 푸는게 맞나 싶게 풀었다. 하필 입력의 형태가 문자열이라서 좀 헤맸다. 문자열 s 에서 일단 각각의 원소들을 따로 빼내야 답을 찾을 수 있을 것 같다. s = "".join(list(s)[1:-1]).split('},{') 예를 들어서 "{{4,2,3},{3},{2,3,4,1},{2,3}}..
[programmers] 최댓값과 최솟값 문제 - Python https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 그간 PS를 너무 안해서 감이 너무 떨어졌다. 짬나는 대로 프로그래머스 기준 lv2 정도 문제만 풀면서 뇌가 굳지 않도록 하려고 한다. 일단 코드블럭 잘 들어가는지 확인할 겸 진짜 쉬운 문제로 포스팅을 해본다. ----------------------------------------------------------------------------------- 상당히 단순한 문제다. 정수가 공백으로..
[BOJ] 1323번 숫자 연결하기 문제 - Python www.acmicpc.net/problem/1323 1323번: 숫자 연결하기 첫째 줄에 N과 K가 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. K는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 꽤나 오랫동안 틀려놓고 묵혀둔 문제이다. 로직은 간단했는데 마무리가 안됐다. 주어진 숫자의 길이만큼 10의 제곱을 해서 곱해주고 원래수를 더해주고를 반복해서 모듈러 K로 0이 나오나 안나오나이다. 결국 (mod K) 에서 0이 되는 연산 횟수를 찾는 것인데, 불가능한 경우에서 문제가 생긴 듯 하다. N, K = map(int, input().split()) length = len(str(N)) N = N % K tmp = 0 ten = (10 ** length)..
[BOJ] 18870번 좌표 압축 문제 - Python www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 해당 수 보다 작은 수는 몇가지 인가? 를 묻는 문제다. 일단 중복은 안봐도 되니까 set으로 압축시켜서 다시 list로 바꾼다음에 역순으로 정렬한다. 해당 list의 길이가 서로 다른 숫자의 개수다. K라고 하고 큰수부터 K-1, K-2, K-3, ... 이렇게 너보다 작은게 이만큼 있다 라는 값을 dict에 저장한다. 그리고 새로 list 하나 만들어서 정답..
[BOJ] 1931번 회의실 배정 문제 - Python www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 이것도 그렇게 간단한데 왜이렇게 오래걸렸는지 모르겠다. 논리의 이해를 위해서 상식적으로 다가가자. 회의들이 되게 많으면 제일 빨리 끝나는 것들을 우선적으로 진행시키면 제일 많이 회의할 수 있을 것 아닌가? 여기서 포인트는 그러면 같이 끝나는 회의는 누구를 우선으로 할 것인가이다. 이것도 상식적으로 다가가면, 어짜피 같이 끝날 것이면 먼저 시작할 회의가 먼저하면 된다. 따라서 종료 시간을 기준으로 정렬을 하되, 같은 경우에는 시작 시간으로 정렬이 되면 된다. 그럼 이건 의미가 없는 것 아닌가라고 생각할 수도 있는데 문제 조건에 ..
[BOJ] 2565번 전깃줄 문제 - Python www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 생각보다 단순한 문제였다. LIS(Longest Increasing Sequence, 가장 긴 증가하는 부분수열)를 이용하는 문제다. 몇개 빼면 제일 똑바로 연결되어있냐? 이건데, 서로 교차안한다 -> 한쪽을 기준으로 오름차순으로 연결되어있다. -> 가장 긴 증가하는 부분수열을 찾아라. 이걸 그리 해맸다. 왼쪽이든 오른쪽이든 한쪽 기준으로 정렬을 해서, LIS를 찾으면 된다. from sys import stdin i..
[BOJ] 1068번 트리 문제 - Python www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 인접리스트로 단방향 연결을 시킨다. 왜냐! 루트부터해서 노드까지로 내려갈꺼니까 다시 올라갈 일은 없다. 인접리스트에 연결관계를 넣어주는 과정에서 만약에 삭제될 노드라면 부모와 연결을 시키지 않는다. 그렇게만 해두면 알아서 루트타고 내려가다가 부모에서 삭제될 노드로 가지 않게 되고 그 아래에 있는 애들은 탐색될 일이 없을 것이다. 탐색은 dfs로 했다. def dfs(x): global answer if n..