코딩테스트(89)
-
백준 뒤집기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 입력으로 주어진 스트링 s에서 연속된 중복을 없앤 스트링인 x를 구합니다. 예를 들어, 000110000는 010이 됩니다. 이후 x에서 0의 개수와 1의 개수 중 더 작은 것을 정답으로 반환합니다. import sys s = sys.stdin.readline() # s에서 연속된 중복을 없앤 string x = s[0] for i in range(len(s)): if i == 0 or s[i] ..
2021.08.16 -
곱하기 혹은 더하기 코드 및 해설 (파이썬)
출처: 이것이 취업을 위한 코딩 테스트다 with 파이썬, Q 2, p 312 0과 1이 포함된 연산은 더하기, 그 외의 숫자들은 모두 곱하기로 처리합니다. 숫자들의 리스트를 deque로 만든 후, 순서대로 숫자를 하나씩 pop합니다. 숫자가 남아있을 때까지 다음을 반복합니다. 이전 혹은 현재 숫자가 0 또는 1이면 이전 숫자와 현재 숫자를 더한 값을 이전 숫자로 설정합니다. 그 외는 이전 숫자와 현재 숫자를 곱한 값을 이전 숫자로 설정합니다. 반복이 끝난 후 이전 숫자를 반환합니다. import sys from collections import deque # 0과 1은 더하기, 나머지 수는 곱하기로 처리해야 함 s = [int(num) for num in sys.stdin.readline()] s = ..
2021.08.16 -
모험가 길드 코드 및 해설 (파이썬)
출처: 이것이 취업을 위한 코딩 테스트다 with 파이썬, Q 1, p 311 그룹의 개수를 저장할 변수인 count를 0으로 초기화합니다. 모험가들의 공포도 리스트를 내림차순으로 정렬하고, 이 중 첫 요소를 꺼내 현재 공포도의 최댓값을 구합니다. 공포도 리스트의 길이가 현재 공포도의 최댓값보다 짧으면 더 이상 그룹을 형성할 수 없어 while문을 탈출하고, 그렇지 않으면 공포도의 최댓값만큼 공포도 리스트의 요소를 삭제합니다. 이는 그룹 하나를 형성했다는 의미이므로 count 값을 하나 증가시킵니다. 마지막으로 count를 반환합니다. import sys # 모험가 수 N = int(sys.stdin.readline()) # 공포도 리스트 scared = list(map(int, sys.stdin.rea..
2021.08.16 -
백준 카드 정렬하기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net cards라는 heap에 각 카드 묶음의 카드 수를 저장합니다. cards의 길이가 1이 될 때까지 다음을 반복합니다. 최솟값 2개를 뽑아(pop) 둘의 합을 result라는 리스트에 추가하고, 둘의 합을 cards 힙에도 다시 추가합니다. 이후 다시 최솟값 2개를 뽑아 이를 반복합니다. 마지막엔 result 리스트의 모든 원소의 합을 반환합니다. sort 함수를 이용하면 시간초과가..
2021.08.12 -
프로그래머스 실패율 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/42889?language=python3 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 입력으로 받은 stages를 오름차순으로 정렬합니다. 이후 Counter를 이용해 각 스테이지별 빈도를 딕셔너리로 저장하고, 이 딕셔너리의 키를 하나씩 받으며 실패율을 계산합니다. 실패율은 (현재 키의 빈도수) / (지금까지 남아있는 사용자 수)입니다. 처음의 사용자 수는 stages의 길이로 초기화하고, 이후 사용자 수에서 현재 ..
2021.08.04 -
백준 안테나 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 집들의 위치를 houses라는 리스트에 저장하고 이를 오름차순으로 정렬합니다. 집들의 개수를 N으로 저장하고, 정중앙의 집인 N을 2로 나눈 몫번째 집에 안테나를 설치합니다. import sys # 집의 개수 N = int(sys.stdin.readline()) # 집의 위치 houses = list(map(int, sys.stdin.readline().split())) # 정렬 houses.sort() # 정중앙의 집..
2021.08.03