본문 바로가기

코딩테스트

(55)
[백준/파이썬] 2231번: 분해합 (Python) 문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 - 브루트포스 알고리즘 1부터 시작해서 n까지의 분해합을 모두 구해서 n과 처음 같아질 때, 그 때가 가장 작은 생성자가 된다. 처음 문제를 풀 때, 반복문의 범위를 range(1, n)까지했더니 반례 1에서 걸려 오답처리가 됐다. 입력값이 한 자리 수 일때까지 생각해서 풀어야 한다. 코드 n = int(input()) for i in range(1,n+1)..
[백준/파이썬] 10816번: 숫자 카드 2 (Python) 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 - 자료구조, 이분탐색, 해시를 사용한 집합과 맵 상근이가 가지고 있는 숫자의 카드를 개수와 함께 딕셔너리에 담는다. 상근이가 가지고 있는 숫자 카드가 6 3 2 10 10 10 -10 -10 7 3 일 경우 딕셔너리에는 {6: 1, 3: 2, 2: 1, 10: 3, -10: 2, 7: 1} 로 담기게 된다. 주어진 숫자카드를 딕셔너리에서 key값을 찾..
[백준/파이썬] 11650번: 좌표 정렬하기 (Python) 문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 - 정렬 리스트에 담아서 lambda표현식으로 정렬했다. 코드 arr = [] for _ in range(int(input())): arr.append(list(map(int, input().split()))) # arr[0]기준 오름차순 -> arr[1]기준 오름차순 arr.sort(key=lambda x: (x[0], x[1]))..
[백준/파이썬] 10814번: 나이순 정렬 (Python) 문제 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 - 정렬 나이, 이름, 인덱스를 리스트에 담아서 lambda표현식으로 정렬했다. 처음에 나이를 문자열로 받아 정렬시켰더니 오답이었다. 나이는 숫자로 형변환 뒤 정렬시켜 주었다. 코드 arr = [] for i in range(int(input())): # 나이, 이름 str1 = list(map(str, input().split())) # 인덱스 str1.append(i) # [나이, 이름,..
[프로그래머스/파이썬] 완주하지 못한 선수 (Python) 문제 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 - 동명이인 처리를 위해 완주한 선수들의 배열에서 참가한 선수의 이름이 존재하면, 완주한 선수들에 배열에서 제거 해 준다. 코드 def solution(participant, completion): for i in range(len(participant)): if participant[i] in completion: completi..
[프로그래머스/MySQL] SQL - SELECT 문제 https://programmers.co.kr/learn/courses/30/parts/17042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID 어린 동물 찾기 SELECT ANIM..
[프로그래머스/MySQL] SQL - IS NULL 문제 https://programmers.co.kr/learn/courses/30/parts/17045 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL 이름이 있는동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL NULL 처리하기 SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS
[프로그래머스/MySQL] SQL - SUM, MAX, MIN 문제 https://programmers.co.kr/learn/courses/30/parts/17043 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 최댓값 구하기 SELECT MAX(DATETIME) FROM ANIMAL_INS 최솟값 구하기 SELECT MIN(DATETIME) FROM ANIMAL_INS 동물 수 구하기 SELECT COUNT(*) FROM ANIMAL_INS 중복 제거하기 SELECT COUNT(DISTINCT(NAME)) FROM ANIMAL_INS WHERE NAME IS NOT NULL