본문 바로가기
728x90
반응형

Python437

[백준] 10989번 : 수 정렬하기 3 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 어떤 정렬 방법을 사용하더라도 메모리 초과가 발생한다. 하여 메모리를 입력의 최댓값인 10,000까지로 지정하여 각 값을 입력받을 때마다 해당 위치에 개수를 증가시킨 후, 개수 별로 출력해 주는 방식으로 해결하였다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 입력할 수의 개수를 입력받는다. N = int(sys.stdin.readline()) 최대 입력가능 값인 10,000까지 인덱스 번호가 .. 2023. 7. 15.
[백준] 2667번 : 단지번호붙이기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 넓이 우선 탐색을 활용하여 상, 하, 좌, 우 4방향을 매번 탐색해 각 단지별로 연결된 집을 찾아 개수를 세는 방법으로 해결하였다. 그래프를 생성하고 각 단지의 시작을 찾아 넓이 우선 탐색을 진행하고 탐색한 집은 1에서 0으로 바꾸어 탐색을 진행하였다. 각 단지별로 집의 개수를 각각 세어 저장하고 이를 정렬해 출력해 주었다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import .. 2023. 7. 15.
[백준] 2606번 : 바이러스 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 그래프 탐색을 활용하여 해결할 수 있다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 깊이 우선 탐색을 활용하여 해결하였다. 깊이 우선 탐색을 수행하는 함수를 생성한다. def Search(start) 해당되는 정점을 탐색한 것으로 표시한다. result[start] = True 해당 정점과 연결되는 정점들을 하나씩 추출한다. for i in graph[start] .. 2023. 7. 15.
[프로그래머스] 괄호 회전하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 빠른 연산에 용이한 deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque 괄호를 회전한 결과를 저장할 deque을 생성한다. queue = deque() 초기 괄호의 상태를 deque 자료구조로 추가한다. queue.append(deque(s)) 다음부터 괄호 길이 전까지 for _ in range(1, len(s)) 문자열을 deque 자료구조로 저장한다. s = deque(s) 문자열에서 가장 앞 괄호를 제거하고.. 2023. 7. 14.
[프로그래머스] 귤 고르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 각 크기별 개수를 저장할 딕셔너리를 생성한다. d = {} 입력받은 귤을 하나씩 추출한다. for i in tangerine 만약 이미 딕셔너리에 해당 크기가 존재하면 개수에 1을 더한다. if (i in d): d[i] += 1 반면에 해당 크기가 처음 나왔으면 개수를 1로 하여 추가한다. else: d[i] = 1 전체 귤의 개수를 크기별로 모두 세었다면 해당 딕셔너리를 개수(value)를 기준으로 내림차순 정렬한다. 개수가 많은 값부터 귤을 추가해야 최소한의 종류로 판매할 .. 2023. 7. 14.
[프로그래머스] 추억 점수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 각 사진별로 하나씩 불러온다. for i in photo 점수를 저장할 변수를 생성하고 초기화한다. score = 0 이름을 하나씩 불러오며 for j in name 만약에 불러온 사진에 해당 인물이 있을 경우 if (j in i) 점수에 해당 인물의 점수를 추가한다. score += yearning[name.index(j)] 이름을 모두 확인하며 점수를 구했으면 해당 점수를 정답에 추가한다. answer.append(score) 3. 소스코드 def solution(name, .. 2023. 7. 14.
[프로그래머스] 콜라 문제 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 남아있는 콜라의 개수가 바꿀 수 있는 콜라의 개수보다 작아질 때까지 반복한다. while (n >= a) 바꾼 콜라의 개수는 현재 가지고 있는 콜라의 개수에서 바꿔주는 빈 병의 개수로 나눈 몫에 가져가면 얼마의 새 병으로 바꿔주는 지를 곱한 값이다. answer += (n // a) * b 이후 바꾼 결과에 바꾸기 전 바꾸지 못하고 남은 콜라까지 더하여 그 값을 새로 저장한다. n = (n // a) * b + (n % a) 3. 소스코드 def solution(a, b, n):.. 2023. 7. 14.
[프로그래머스] 멀리 뛰기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 각 수마다 경우의 수를 저장할 딕셔너리를 생성한다. d = {} 처음에 움직이지 않는 경우와 1칸 움직이는 경우를 딕셔너리에 추가한다. d[0] = 1 d[1] = 1 다음 숫자인 2부터 입력받은 수까지 반복하며 다음 수의 경우의 수를 저장한다. 다음 수의 경우의 수는 이전 수의 경우의 수와 그 이전 수의 경우의 수를 더한 값이다. for i in range(a, n + 1): d[i] = d[i - 1] + d[i - 2] 1칸과 2칸을 이동하여 각 칸으로 갈 수 있는 방법은 .. 2023. 7. 14.
[백준] 2609번 : 최대공약수와 최소공배수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 두 수를 입력받는다. num1, num2 = map(int, sys.stdin.readline().split()) 최대공약수를 저장할 변수를 생성하고 1로 초기화한다. Max = 1 나눌 변수를 생성하고 1초 초기화한다. i = 1 원하는 시점에서 종료하기 위해 무한 반복문을 사용한다. while (True) 만약 두 수가 모두 나누어 떨어지면 if (num1 % i == 0) and (num2 .. 2023. 7. 13.
[백준] 1003번 : 피보나치 함수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 테스트 케이스 횟수를 입력받는다. T = int(sys.stdin.readline()) 테스트 케이스 횟수만큼 반복하며 for _ in range(T) 각 테스트 케이스 별로 피보나치 수를 입력받는다. num = int(sys.stdin.readline()) 각 피보나치 수의 0의 개수와 1의 개수를 저장할 리스트를 생성하고 초기의 0과 1의 0의 개수와 1의 개수를 리스트로 묶어 저장한다. li = [[1, 0], [0, 1.. 2023. 7. 13.
728x90
반응형