본문 바로가기

파이썬

(30)
백준 4358 생태학 (파이썬) https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 문제 풀이 dictionary를 알고 있다면 쉽게 풀리는 문제이다. 입력값으로 주어지는 나무들에 대해서 dictionary에 이미 있는지 검사하고 만약 있다면 해당 나무의 값을 +1하고 없다면 dictionary에 값을 넣으면서 기본값을 1로 잡아주면 된다. 풀이도 간단하고 시간복잡도 역시 높지 않으며 문제풀이의 로직 역시 다른 사람들과 동일했다. 그러나 시간초과가 발목을 잡았다. 조금..
백준 14620 꽃길 (파이썬) https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net 풀이 이 문제는 파이썬의 itertools를 사용해서 combinations를 통해서 푸는 방법과 DFS로 푸는 방법이 있다. 코드 #=================== 조합으로 푸는 방법 =================== # import itertools # feild = [] # answer = int(10e9) # d = [(-1, 0), (1, 0), (0, 1), (0, -1)] # ..
파이썬 모듈에 속한 함수, 변수 출력하기 배경 코딩 테스트를 할 때 IDE를 사용하지 못하기에 자동완성을 사용할 수 없다. 그렇기에 dir함수를 사용해서 인자로 들어가는 모듈이나 클래스가 가지고 있는 속성들을 전부 출력시켜 확인하고 사용할수있는 방법이 있어 따로 남기고자 한다. 코드 import math def abc(): for data in iter(dir(math)): print(data) abc() 다음과 같은 코드를 출력할 경우 math에 속한 함수들의 이름을 출력할 수 있다.
백준 2671 잠수함식별(파이썬) 문제 코드 import re def confirm(pattern): return bool(re.fullmatch('(100+1+|01)+', pattern)) def sol(): answer = confirm(input()) if answer: print("SUBMARINE") else: print("NOISE") sol() 풀이 처음에는 입력값을 하나씩 풀어서 제공하려고 하였으나 제출하는 중 실패가 나와 검색을 해보았고 정규식 모듈(Regular Expression 줄여서 re)가 있는 걸을 알게 되었다. 해당 문제는 re 모듈을 사용하면 쉽게 해결이 가능한 문제였다. 이후 re모듈에 대해서 익숙해질 필요가 있을듯 하다.
백준 1212 8진수 2진수 (파이썬) https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 문제 풀이 이 문제는 파이썬의 bin, int함수에 대해서 알고 있으면 쉽게 해결되는 문제이다. bin(문자열)을 넣으면 2진수로 반환해주고 int는 첫번째 인자에는 문자열을 넣어주고 두번째 인자에는 첫번째 인자의 진수를 적어준다. (기본값은 10진수) 코드 def solution(x): ans = int(x, 8) print(bin(ans)[2:]) solution(input())
백준 20053 최소, 최대 2 (파이썬) https://www.acmicpc.net/problem/20053 20053번: 최소, 최대 2 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 문제에서 요구하는대로 각 테스트 케이스 별로 코드를 작성하면된다. 먼저 테스트 케이스의 수를 받고 그 다음 해당 테스트케이스에서 값의 수만큼 반복을 해서 리스트를 만들고 해당 리스트의 최대 최소 값을 출력 하면 된다. 코드 def solution(): T = int(input()) answer = [[] for _ in range(T)] for t in range(T): N = int(input()) ary = list(map(int, input().split(' '))) answer[t].ap..
백준 5597 과제 안 내신 분..? (파이썬) https://www.acmicpc.net/problem/5597 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 풀이 list.remove()를 알면 바로 풀리는 문제이다. 나는 미리 입력에 대해서 함수를 통해서 받고 문제를 해결하는 로직을 나누어서 풀었다. 코드 def pre(): x = [] for i in range(28): x.append(int(input())) return x def solution(x): ans = [_ for _ in range(1, 31)] for element ..
[백준] 2753 윤년 (파이썬) https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 풀이 파이썬의 기초적인 문법을 물어보는 문제이다. 나는 프로그래머스의 문제를 풀듯이 함수를 만들어서 해결하였다 코드 def solution(year): # 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. if ((year%4 == 0) and (year%100 != 0)) or (year%400==0) : return 1 return 0 year = int(inp..
[프로그래머스] 괄호 회전하기 (파이썬) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문자열을 이용한 문제를 몇번 풀어보았다면 쉽게 풀리는 문제였다. 나는 다음과 같이 문제를 접근했다. 1. 문자열을 회전 시켜 새로운 문자열을 만든다. 2. 새로운 문자열에 대해서 올바른 괄호 문자열인지 판별한다 2-1. 올바른 괄호 문자열일 경우 answer+1를 해준다. 2-2. 올바른 문자열이 아닐경우 넘어간다. 코드 def solution(s): answer = 0 for i in..
[프로그래머스] H-Index (파이썬) 문제 풀이 문제가 이해되지 않아서 고생한 문제다. 문제에서 H-index에 대해서 설명하며 다음과 같은 조건을 말해준다. 1. H번 이상 인용된 논문이 2.H편 이상이고 3. 나머지는 H번 이하 인용된다 해당 조건을 만족하는 H의 값들 중에서 가장 큰 수를 찾아서 반환하면 된다. 문제를 풀기 위해 내림차순으로 정렬을 해준다. 그후 리스트의 배열과 리스트의 원소값과 비교를 한다. (idx >= citation) 만약 해당 조건을 만족한다면 현재 위치의 원소부터는 1,2,3번 조건을 만족하지 못한다는 이야기가 된다. 그러므로 이전 idx를 반환하여준다. 이때 "=" 조건도 꼭 붙여주어야 한다. 추가로 H-Index에 대해서 아래의 게시글을 보면 이해가 빠를듯 하다. https://www.ibric.org/m..