본문 바로가기
728x90
반응형

Python437

[프로그래머스] 전화번호 목록 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 해당 문제는 전화번호가 다른 전화번호의 접두사가 되는지 판별하는 문제입니다. 접두사가 되려면 전화번호의 앞 문자부터 일치해야 합니다. 하여 전화번호를 문자열 형태로 정렬하게 되면 1~9를 사전정렬하듯 오름차순으로 정렬됩니다. 정렬한 전화번호를 앞에서부터 해당 전화번호의 다음 전화번호와 비교하여 접두사인지 아닌지를 판별하면 되는데 여기서 다음 전화번호 하나만 비교하면 되는 이유는 전화번호를 문자열 형태로 정렬했기 때문입니다. 문자열 형태로 정렬했기 때문에 뒤 전화번호는 이전 전화번.. 2023. 8. 3.
[백준] 1874번 : 스택 수열 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 수열의 범위를 입력받는다. T = int(sys.stdin.readline()) 현재 수열의 마지막 값을 저장할 변수를 생성하고 수열의 시작값인 1로 초기화한다. count = 1 수열을 만들 수 있는지 없는지 확인할 변수를 생성하고 True로 초기.. 2023. 8. 2.
[프로그래머스] 덧칠하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 현재 벽의 상태를 저장할 변수를 만들고 True로 초기화한다. result = [True] * n 칠해야 하는 구역의 번호를 하나씩 추출하여 for i in section 해당 구역을 칠하지 않은 것으로 변경한다. result[i - 1] = False 칠해야 하는 구역의 번호를 하나씩 추출하여 for i in section 만약 해당 구역이 아직 칠해지지 않았다면 if (not result[i - 1]) 칠해야 하므로 칠하는 횟수를 1 증가시킨다. answer += 1 그리고 .. 2023. 8. 2.
[백준] 11651번 : 좌표 정렬하기 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 점의 개수를 입력받는다. N = int(sys.stdin.readline()) 각 점의 x좌표와 y좌표를 저장할 리스트를 생성한다. li = list() 점의 개수만큼 반복하며 for _ in range(N) 각 점의 x좌표와 y좌표를 입력받아 리스트로 저장한다. li.app.. 2023. 8. 1.
[프로그래머스] 실패율 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 해당 문제는 각 스테이지 별로 실패하는 사람의 수를 세어 현재 스테이지 별 남은 사람의 수를 나눠주면 실패율을 구할 수 있다. 구한 실패율을 각각 저장하고 실패율을 기준으로 내림차순으로 정렬하여 해당 스테이지 번호를 출력하면 된다. 처음 사용자의 수를 저장한다. size = len(stages) 각 스테이지별로 실패율을 저장할 딕셔너리를 생성한다. d = {} 각 스테이지 번호를 하나씩 지정하여 for i in range(1, N + 1) 만약 해당 스테이지를 실패하는 사람이 없.. 2023. 8. 1.
[백준] 15649번 : N과 M (1) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 1부터 N까지 수 중, M개를 뽑아 나열하는 것과 동일하다. 하여 permutations() 함수를 활용하여 순열의 결과를 저장하고 이를 하나씩 출력하면 되는 문제이다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys permutations() 함수를 사용하기 위해 permutstions 모듈을 불러온다. from itertools import permutation.. 2023. 7. 31.
[프로그래머스] 타겟 넘버 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 각 수마다 -, + 두 가지 경우의 수가 존재한다. 따라서 총 (2 ** 숫자의 개수) 가지의 경우의 수가 나온다. 하여 모든 경우의 수를 구하고 이를 하나씩 확인하여 각 수의 합을 구한 뒤, 해당 합이 타겟 넘버와 같은지 비교하는 방식으로 문제를 해결하였다. 각 경우의 수를 구할 때 appendleft() 함수를 사용하기 위해 deque 모듈을 불러온다. from collections import deque 모든 경우를 저장할 리스트를 생성한다. graph = list() 모든.. 2023. 7. 31.
[백준] 11053번 : 가장 긴 증가하는 부분 수열 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 각 수까지 부분 수열에서 최대로 긴 증가하는 부분 수열의 길이를 구하면 된다. 처음 최소 길이 1로 초기화한 배열을 가지고 수열에서 각 수를 가져와 수열의 이전 값들과 비교한다. 만약 가져온 수가 더 크다면 비교한 값의 부분 수열 길이에 1을 더한 결과와 현재 수의 부분 수열 길이를 비교하여 더 큰 결과를 가져온 수의 부분 수열 길이로 저장한다.. 2023. 7. 30.
[프로그래머스] 이중우선순위큐 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque deque 자료구조를 사용해 큐를 생성한다. queue = deque() 문자열 배열을 하나씩 추출하며 for i in operations 문자열을 공백을 기준으로 분리하여 리스트로 저장한다. li = list(i.split()) 만약 명령어가 I로 시작하면 if (li[0] == "I") 값을 정수로 큐에 추가한다. queue.append(int(li[1])) .. 2023. 7. 30.
[백준] 1436번 : 영화감독 숌 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 숫자를 차례대로 보면서 666이 포함되어 있으면 개수를 세고, 만약 찾으려고 하는 번째의 수를 찾으면 출력하고 종료하면 된다. 666이 포함된 숫자 중 가장 작은 숫자인 666부터 시작하여 수를 찾을 때까지 반복하면 된다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 찾을 영화 제목 순서를 입력받는다. N = int(sys.stdin.readline()) 가장.. 2023. 7. 29.
728x90
반응형