분류 전체보기 (18) 썸네일형 리스트형 코딩 테스트 데이터 입력 받기 입력 1. 단일 문자 - input( ) 은 한 줄 단위, 문자열로 입력을 받음 ex) x = int(input) char_x = input( ) 2. 다중 입력 - map을 이용하여 입력 받는다. ex) y, z = map(int, input( ).split( ) ) list_a = list(map(int, input( )).split( ))) 3. 2D 리스트 ex) list_b = [list(map(int, input().split())) for _ in range(n)] 4. 더 빠른 입력 - sys.stdin.readline( )를 사용한다. - sys를 import 해주고 - input = sys.stdin.readline 으로 사용한다. ex) import sys input = sys.std.. [백준] 종이의 개수 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 1. 문제 조건 정리(변형) a) R(-1), G(0), B(1)이 있는 큰 종이가 있습니다. b) 단색이면 자르지 않고 해당 색 개수를 늘립니다. c) 단색이 아니면 9등분을 하여 위 과정을 다시 반복합니다. 2. 입력 데이터 - N = 3^7 = 약 2000개 입니다 3. 아이디어 - 영역을 줄여나가며 구현만 하면 됩니다. - 반복과정이 있으니 재귀함수를 사용하면 됩니다. - 매번 .. [프로그래머스] 타겟넘버 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 1. 문제 조건 정리 a) 음이 아닌 정수들과 +, - 연산자들로 만든 수가 타겟넘버와 같은 경우가 몇 개인지 찾는 문제입니다. b) 순서가 고정되어 있기 때문에 모든 경우의 수를 따질 수 밖에 없습니다. 2. 입력 데이터 - N = 20 - 각 숫자는 50 이하의 자연수입니다. 3. 아이디어 - 문제의 입출.. [프로그래머스] 소수 만들기 https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 1. 문제 조건 정리 a) 주어진 수에서 3개를 택하여 모두 더했을 때 해당 수가 소수인 경우의 개수를 구합니다. b) nums 원소는 1~ 1000이하의 자연수이고 중복된 숫자가 들어가 있지 않습니다. 2. 입력 데이터 - N = 50 입니다. 3. 아이디어(1) - 가능한 모든 세 수의 합을 구한 뒤 해당 수가 소수인지 아닌지 판별합니다... [프로그래머스] 베스트 앨범 1. 문제 조건 정리 a) 장르별로 최다 재생곡 두 개를 담은 배열을 반환합니다. b) 재생 횟수가 같은 노래는 고유 번호 낮은 노래를 우선으로 합니다. c) 고유번호란 재생 기록 배열의 인덱스 값입니다. d) 총 재생 수가 많은 장르 순으로 정렬합니다. 2. 입력 데이터 - N = 10,000 3. 아이디어 - 장르를 key로 하고 해당 장르에 해당하는 곡들의 고유번호와 재생횟수가 담긴 리스트를 value로 하는 dictionary 활용 - dictionary를 총 재생횟수의 내림차순으로 정렬 - 순회하며 해당 장르 리스트에서 최상위 2개곡 선정 - 장르 개수 N1, 최대 곡수 N2라 할 때 - N = N1*N2 - dictionary 생성 O(N1 * N2) + dictionary 정렬 O(N1N2l.. [프로그래머스] 위장 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 1. 문제 조건 정리 a) 각 카테고리 별로 의상이 있고 입을 수 있는 의상의 모든 경우의 수를 구해야 합니다. b) 카테고리 당 하나의 의상만 입을 수 있습니다. c) 같은 이름의 의상은 없습니다. 2. 입력 데이터 - N = 30개, 각 요소는 길이 20 이하의 문자열입니다. 3. 아이디어 - 카테고리 개수에 따라 nC1 ~ nCn 의 조합을 구한 후 - 선택된 카테고리에 속한 아이템 개수를 곱하면 됩니다. - 하지만 단순히 조합을 구하는 데에 이어 어떤 카테고리가 선택되었는 지도 확인해야하기 때문에 - 구현도 쉽지 않고 중복된 계산이 많은 것.. [프로그래머스] 전화번호 목록 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 1. 문제 조건 정리 a) phone_book 배열의 한 요소가 다른 요소의 접두사인지 확인하는 문제입니다. b) 같은 전화번호가 중복되어 들어있는 경우는 없습니다. 2. 입력 데이터 - N = 1,000,000명, 각 요소는 길이 20 이하의 문자열입니다. - 1초 시간제한이라고 했을 때, O(N) ~ O(NlogN) 이내로 해결해야 합니다. 3. 아이디어.. [프로그래머스] 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 1. 문제 조건 정리 a) 요소 하나만 다른 두 배열 participant, completion이 주어집니다. b) 겹치지 않는 요소가 무엇인지만 찾으면 됩니다. c) 단, 동명이인이 있을 수 있습니다. 2. 입력 데이터 - N = 100,000명, 각 요소는 길이 20 이하의 문자열입니다. - 1초 시간제한이라고 했을 때, O(NlogN) .. 이전 1 2 다음