본문 바로가기

프로그래밍/알고리즘128

백준 2331 - 분해합 파이썬 우테코를 같이 지원했던 사람들끼리 슬랙에서 만나 스터디를 꾸렸다 평일 오전 9-12시 동안 게더타운에서 모각코를 진행할 예정이다 확실히 혼자하는 것보다 더 집중하게 된다는 점에서 하기 잘했다 문제 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 나의 풀이 #입력 값(n) 받기 n = int(input()) #결과를 담을 변수 생성 result = 0 #for 문으로 1부터 N까지의 모든 수를 계산하보며 분해합을 구함 #range의 범위가 (n+1)이유는 하나 전 까지 받기 때문에 .. 2022. 12. 2.
백준 11399 - ATM 파이썬 문제 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 내 코드 n = int(input()) #기다리는 사람들을 리스트의 형태로 입력 받음 people = list(map(int, input().split())) #정답 변수의 값을 0으로 초기화 진행 num = 0 #최솟값 도출을 위해 작은 순서대로(오름차순)으로 정렬 people.sort() for i in range(1, n+1): #리스트의 0번째부터 i번째 수까지 더해줌 num += sum(people[0:i]) print(num) 문제의 포인트는 '최솟값 구하기' = '오름차순하기.. 2022. 12. 1.
백준 1260- DFS와 BFS 파이썬 문제 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 나의 코드 N,M,V = map(int,input().split()) #행렬 만들기, list comprehension사용 graph = [[0]*(N+1) for _ in range(N+1)] for i in range (M): a,b = map(int,input().split()) #정점 간의 연결을 표시 graph[a][b] = graph[b][a] = 1 #방문 리스트 행렬, 각 노드가 스택과 큐에 들어간 적이 .. 2022. 11. 30.
백준 9012 괄호 파이썬 문제 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 해결코드 #변수 할당 a = int(input()) for i in range(a): b = int(input()) s = list(b) #변수 초기화 sum = 0 for i in s: #여는 괄호가 나오면 if i == '(': #+1을 해주고 sum += 1 #닫는 괄호가 나오면 elif i == ')': #-1을 해준다 sum -= 1 #닫는 괄호가 여는 괄호보다 많다면 if sum < 0: print('NO') bre.. 2022. 11. 29.
백준 1002번 터렛 파이썬 문제 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 코드 #math를 가져온다 import math n = int(input()) for _ in range(n): #사용할 변수를 선언 x1, y1, r1, x2, y2, r2 = map(int, input().split()) # 두 원의 거리를 구하는 공식에 대입한 수식 #'sqrt'는 제곱근 함수, 'math.sqrt(x)'를 하면 x의 제곱근을 반환 distance = math.sqrt((x1-x2)**2 + (y1-y2)**2) #두 원이 동심원이고 반지름이 같으면 if distance == 0 and .. 2022. 11. 28.
프로그래머스 - A로 B 만들기 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결코드 #sorted를 이용한 방법 def solution(before, after): #기존의 before를 오름차순하는 새로운 before를 선언함 before=sorted(before) #기존의 after를 오름차순하는 새로운 after를 선언함 after=sorted(after) #before과 after이 같은지 확인하여 if before==after: #같으면 1을 리턴 return 1 #같지 않을 경우 else: #0을 리턴 return 0 #숏코드 def solution(before, a.. 2022. 11. 25.
프로그래머스 - 로그인 성공? 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결코드 #첫 번째 방법 def solution(id_pw, db): #기본적으로 result를 fail로 만듦 result = 'fail' #먄약, 모든 원소가 다 있다면 로그인으로 리턴 if str(id_pw) in str(db): result = 'login' #위의 경우 아니고, id원소만 있다면 'wrong pw'리턴 elif str(id_pw[0]) in str(db): if id_pw[0] in [i[0] for i in db]: result = 'wrong pw' #아래의 두 줄은 삭제해도.. 2022. 11. 24.
프로그래머스 - 겹치는 선분의 길이 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결 코드 def solution(lines): #선분의 최소길이와 최대길이를 구함 sets = [set(range(min(l), max(l))) for l in lines] #총 3개의 선분 중, 각 첫번째 두번째가 겹치는 경우, 1과 3이, 2와 3이 겹치는 경우의 교집합을 구하고 합집합으로 처리 return len(sets[0] & sets[1] | sets[0] & sets[2] | sets[1] & sets[2]) 파이썬의 교집합 set1 = set([1,2,3,4,5]) set2 = set([.. 2022. 11. 23.
프로그래머스 - 삼각형의 완성조건(2) 파이썬 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 입출력 예제 설명 첫 번째 [1,2]에서 삼각형을 완성하려면 나머지 한 변이 2여야 함 두번째 [3,6]에서는 1. 6가 가장 큰 변이라면-> 나머지 변은 4,5,6가능 (3개) 2. 아직 나오지 않은 변이 가장 큰 변이라면, 범위가 '6 2022. 11. 22.