파이썬 404

[baekjoon] 백준 1107번(파이썬): 리모컨

문제 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 알고리즘 - 반복문을 통해 이동해야 하는 채널로 가기 위한 방법을 확인한다. - 반복문을 통해 채널로 이동하기 위해 눌러야 하는 번호가 고장이 났는지 확인하고 고장이 났다면 그 번호를 눌러서는 이동할 수 없다. - 채널로 이동 가능하다면 원래 cnt, 채널을 누른 개수와 +/- 를 누른 개수를 더한 값을 비교하여 cnt에 담는다. - 마지막 cnt 값이 채널로 가기 위한 최소 개수가 된다. 코드 import sys n = int(sys.st..

CodingTest/Baekjoon 2022.05.25

[programers] 프로그래머스(파이썬) : 기능개발

문제 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 알고리즘 - 반복문을 통해 모든 작업이 완료될 때까지 작업을 한다. - zip을 통해 현재 작업 진도를 작업 속도와 더한다. - 현재 작업 진도가 100보다 크거나 같다면 현재 모든 작업 진도가 100보다 크거나 같은 것을 리스트에서 빼준다. - 이때 빠진 작업의 개수를 answer에 추가한다. - 모든 작업이 완료했다면 answer를 출력한다. 코드 def solution(progresses, speeds): answer = [] while pro..

[baekjoon] 백준 16179번(파이썬): ZOAC

문제 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 알고리즘 - 재귀 함수를 통해 제일 작은 알파벳의 앞 배열과 뒷 배열을 확인한다. - answer에 제일 작은 알파벳 위치에 제일 작은 알파벳을 입력하고 "".Join()을 통해 출력한다. 코드 import sys def solution(s, start): global answer # 배열이 없으면 리턴 if not s: return # 현재 배열의 제일 작은 알파벳을 찾는다. target = min(s) idx = s.index(target) # ..

CodingTest/Baekjoon 2022.05.20

[baekjoon] 백준 19583번(파이썬): 싸이버개강총회

문제 19583번: 싸이버개강총회 첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는 www.acmicpc.net 알고리즘 - 반복문을 통해 시간과 닉네임을 입력받는다. - 개총 시작시간보다 일찍 들어온 사람을 dic에 입력한다. - 개총 종료시간과 스트리밍 종료시간 사이에 들어온 사람을 확인하여 개총 시작시간보다 일찍 들어온 사람이라면 answer에 입력한다. - answer에 길이를 출력한다. 코드 import sys s, e, q = map(str, sys.stdin.readline().split()) dic = {} answe..

CodingTest/Baekjoon 2022.05.19

[baekjoon] 백준 3107번(파이썬): IPv6

문제 3107번: IPv6 첫째 줄에 올바른 IPv6 주소가 주어진다. 이 주소는 최대 39글자이다. 또한, 주소는 숫자 0-9, 알파벳 소문자 a-f, 콜론 :으로만 이루어져 있다. www.acmicpc.net 알고리즘 - 반복문을 통해 각 그룹을 확인한다. - 0으로만 이루어진 그룹이 있다면 idx에 저장한다. - 0으로만 이루어지지 않은 그룹은 0을 추가한다. - 0으로만 이루어진 그룹은 반복문을 통해 IPv6의 길이가 8이 될 때까지 "0000"을 추가한다. 코드 import sys IPv6 = list(map(str, sys.stdin.readline().strip("\n").split(":"))) idx = [] # 반복문을 통해 각 그룹을 확인 for i in range(len(IPv6)):..

CodingTest/Baekjoon 2022.05.18

[baekjoon] 백준 2257번(파이썬): 화학식량

문제 2257번: 화학식량 첫째 줄에 화학식이 주어진다. 화학식은 H, C, O, (, ), 2, 3, 4, 5, 6, 7, 8, 9만으로 이루어진 문자열이며, 그 길이는 100을 넘지 않는다. www.acmicpc.net 알고리즘 - 반복문을 통해 문자를 확인한다. - 문자가 "("라면 stack에 추가한다. - 문자가 ")"라면 while문과 .pop()을 통해 stack의 괄호 안에 있는 수를 모두 더하여 stack에 추가한다. - 문자가 원자라면 stack 수를 추가한다. - 문자가 괄호도 아니고 원자도 아니라면 숫자이므로 stack에 마지막 숫자를 입력받은 숫자로 곱한다. - 위 4가지 조건을 통해 반복하여 stack에 값을 추가해준 뒤 stack을 모두 더하여 출력한다. 코드 import sy..

CodingTest/Baekjoon 2022.05.17

[baekjoon] 백준 15927번(파이썬): 회문은 회문아니야!!

문제 15927번: 회문은 회문아니야!! 팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을 www.acmicpc.net 알고리즘 - 문자열 길이가 n일 때와 n-1일 때 회문이 되는지 확인한다. - 문자열의 길이가 n일 때 회문이면서, n-1일 때도 회문이라면 그 문자열은 하나의 문자로 연속되어 있는 문자열인 회문이다. - 문자열이 짝수인지 홀수인지, 길이가 n일 때인지 n-1일 때인지에 따라서 왼쪽 문자열과 오른쪽 문자열을 나눈다. - 나눈 문자열이 회문인지 판단하여 문제를 수행한다. 코드 import sys # 회문인지 판단 def so..

CodingTest/Baekjoon 2022.05.16

[baekjoon] 백준 12919번(파이썬): A와 B 2

문제 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 알고리즘 - 백 트래킹을 통해 완성된 문자열로 시작 문자열을 만들 수 있는지 확인한다. - 백 트래킹은 2가지 조건을 통해 수행한다. 코드 import sys # 백 트래킹을 통해 완성된 문자열로 시작 문자열을 만들 수 있는지 확인 def solution(c): global flag if len(c) == len(s): if c == s: flag = True return if c[0] == "B": c.reverse..

CodingTest/Baekjoon 2022.05.15

[baekjoon] 백준 2800번(파이썬): 괄호 제거

문제 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 알고리즘 - 반복문을 통해 괄호의 시작점과 끝점을 순서대로 저장한다. - 저장된 괄호의 시작점과 끝점을 제거하기 위해 모든 경우의 수를 확인한다. 이때, 괄호의 개수를 늘리면서 확인한다. - 반복문을 통해 모든 경우의 수의 괄호를 제거하고 저장한다. - 중복 없이 저장된 것을 오름차순으로 정렬하여 출력한다. 코드 import sys from itertools import combinations n = list(map(str,..

CodingTest/Baekjoon 2022.05.14

[baekjoon] 백준 6443번(파이썬): 애너그램

문제 9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net 알고리즘 - 이전에 비슷한 문제를 풀어서 조합 라이브러리를 통해 푸는 것은 아니라고 판단했다. (시간 복잡도 펑!) - 단어를 하나하나 확인하면서 백 트래킹을 통해 문제를 수행했다. - visited에 각 알파벳의 개수를 입력하고 그 알파벳들을 사용하면서 백 트래킹을 통해 모든 단어를 만든다. - 문제를 입력받을 때 정렬하여 받았기 때문에 자동적으로 알파벳을 사용하여 단어를 만들 때 정렬된 단어가 완성된다. 코드 import sys def bac..

CodingTest/Baekjoon 2022.05.13