파이썬 이것저것/코테준비 31

[알고리즘] 주문 관리 시스템 문제 해결하기

주문 생성, 주문 제거, 주문 조회의 기능을 가진 주문 관리 시스템을 구현 입력예시 5 1 1 # 1번 주문 생성 1 2 # 2번 주문 생성 3 2 # 2번 주문이 몇 번째인지 조회 2 1 # 1번 주문 제거 3 2 # 2번 주문이 몇 번째인지 조회 출력 예시 2 1 주문 관리 시스템 주문 관리 시스템 - 성능 확인 연결 리스트로 구현하였을 때 처리 속도가 너무 느림 시간 복잡도 연결 리스트의 특정 노드를 삭제하기 위해서 그 특정 노드에 접근하는 과정이 필요하다 연결 리스트의 특성에 의해 특정 원소에 접근하기 위해서는 시작 원소부터 하나씩 따라가야 한다. 연결 리스트는 어떤 노드를 삭제하기 위해서 그 노드의 이전 노드와 다음 노드가 무엇인지 알고 있어야 하기 때문이다. 이 단점을 개선하기 위해 연결 리스..

[Python] 연결 리스트 문제 해결

구슬 넣기 문제 양쪽이 열려있는 파이프에 구슬을 넣고 결과를 출력해보자. 왼쪽 또는 오른쪽으로 구슬을 넣을 수 있다. 입력예시 3 1 0 # 왼쪽으로 1 삽입 2 1 # 오른쪽으로 2 삽입 3 0 # 왼쪽으로 3 삽입 출력 예시 3 1 2 파이프를 갖는 클래스를 구현하여 자료구조 구현 추상적 자료형은 구현 방법을 지정하지 않으므로 파이프를 어떻게 구현하든 상관이 없다. 이 문제를 가장 잘 해결할 수 있는 '덱' 이라는 자료구조가 있음(참고) 명령 왼쪽으로 1 삽입 오른쪽으로 2 삽입 왼쪽으로 3 삽입 배열의 특성에 의해 왼쪽으로 구슬을 삽입하는 경우 파이프 내의 모든 구슬을 한 칸씩 옮겨야 하는 연산이 필요하다. 좋은 해법인지 생각해보기 수행하는 명령의 수가 적을수록 시간이 덜 걸린다. (똑같은 연산을 ..

[Python] 자료구조

자료구조란? 자료를 저장하는 구조 여러 가지 종류가 있으며 저장된 자료에 대해 접근하는 방법 등의 차이가 존재한다. 자료구조를 배우는 이유 똑같은 음식을 같은 양만큼 담고 있는 두 그릇이 있다. 여우는 넓은 그릇이 편리하고 두루미는 길쭉한 그릇이 편리하다. 자료구조 또한 형태에 따라 장단점이 존재하며 구현하고자 하는 프로그램의 성능을 고려하여 알맞은 자료구조를 선택해야 한다 밥상에는 음식이 필요한 것처럼, 프로그램에도 자료가 빠져서는 안 된다. 프로그램에 필요한 자료를 효율적으로 담기 위해 자료구조를 배운다. 여우는 접시를, 두루미는 호리병을 써야 행복하게 음식을 먹을 수 있다. 음식을 담는 그릇도 먹는 사람, 먹을 음식을 고려하여 적절한 것을 선택해야 한다. 프로그램에서 특정 알고리즘을 구현하기 위해 ..

[백준] 11653번: 소인수분해

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 풀이 a = int(input()) soinsu_list= [] soinsu =2 while a > 1: if a % soinsu !=0: soinsu += 1 else: a = a / soinsu soinsu_list.append(soinsu) for i in so..

[파이썬] 프로그래머스 커뮤러닝 2주차 N으로 표현

https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 동적계획법 주어진 최적화 문제를 재귀적인 방식으로 보다 작은 부분 문제로 나누고, 부분 문제를 풀어서 전체 문제의 해답에 이르는 방식이다. 어디 까지 하고 이를 다시 탐색하는 방법으로 탐색 범위를 한정 할 수 있다. 피보나치 수열을 동적계획법에 적용 동적계획법을 사용하면, 문제를 부분으로 쪼개서 이를 해결한다. 앞의 문제를 풀고 이를 사용하여 다음문제에 활용한다. 대표적인 문제는 Knapsack ..

[파이썬] 프로그래머스 커뮤러닝 2주차 더 맵게

https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스코빌 지수가 되었든, 아니든 수가 주어질 것이다. N개의 수중에 가장 작은 것과 두번 째로 작은수에 *2를 써서 더하는 것을 몇 번 해야되는지 알아내는 문제이다. 제한사항을 보면 효율성 테스트도 포함되어 있다. 정렬을 통해 1 부터 12까지 본다. 1과 2중 2에 x2를 해주면 5가 나오고 이것을 다시 원소의 순서대로 넣어줌 다시 반복을 실시한다 13의 경우, 가장 뒤에 있는 12보타 크므로 가..

[Python] 기초수학 코드구현

계차수열 # 두 항의 차로 이루어진 수열 # 어떤 수열이 인접하는 또다른 수열 # 계차수열을 이용하여 구할 수 있음 # n번째 항의 값을 출력하는 프로그램 inputAN1 = int(input("a1 입력: ")) inputAN = int(input("an 입력: ")) inputBN1 = int(input("b1 입력: ")) inputBD = int(input("bn 공차 입력: ")) valueAN = 0 valueBN = 0 n = 1 while n inputN): searchN = i flag = False break print() n += 1 print("{} 항 : {}".format(inputN, searchN)) inputN = int(input("n항 입력:")) flag = True ..

[파이썬] 프로그래머스 커뮤러닝 1주차 큰 수 만들기

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 풀이계획 - 탐욕법을 사용하여 답을 찾아내는 방법이 있음 -> 두개의 인자가 주어질때, 큰 숫자일때 문자형식으로 k숫자로 주어지게 된다. - number라는 숫자에서 k는 1이상 number를 자연수 미만으로 주어지게 됬다. - 가장 큰수를 뽑는 방법은 4개의 숫자중에서 가장 큰 숫자 9와 4를 뽑..

[파이썬] 프로그래머스 커뮤러닝 1주차 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 정렬 알고리즘을 활용하여 접근하는 문제 풀이계획 - [6,10,2]가있으면 이를 조합하여 장 큰 수를 문자열로 출력해야 함 1) 빈 문자열로 수를 초기화 -> 가장 크게 만들 수 있는 수를 고름 -> 그 수를 현재 수에 이어 붙임 -> 모든 수를 다 사용할때까지 반복함 - 목록에서 가장큰 수를 만드..

[파이썬] 프로그래머스 커뮤러닝 1주차 체육복

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 제한사항 - 전체 학생의 수가 30 이하라는 점을 잘 봐야딤 - 체육복을 빌려줄 수 있지만 여벌 체육복을 도난당했을 수 있음 이때 다른 사람에게 줄 수는 없음 - 1번이 2번에게만 빌려 줄 수 있음 문제의 접근방식 - 1번이 2번, 3번이 4번 을 빌려줘 5가 될 수 있도록 하거나 3이 2를 빌려주거나 5가 4가 빌려줘 해결할 수 있을 것이다. 탐욕법(Greedy..