본문 바로가기

분류 전체보기

(52)
프로그래머스 155651 Python / 호텔 대실 안녕하세요. 이번엔 프로그래머스 lv2 155651 호텔 대실 문제를 파이썬으로 풀어보겠습니다. 문제 링크는 여기입니다. https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 효율적인 계산을 하려면 누적합 방식을 사용하는 것이 좋아보입니다. 누적합이란, 어떠한 배열 N이 있을 때, 새로운 배열 sum에 합을 누적시켜 저장하는 것입니다. 예를 들어 N = [ 1, 3, 2, 5, 1 ] 이라고 하면, 누적합을 저장할 리스트 sum을 만들어서, ..
프로그래머스 12953 Python / N개의 최소공배수 안녕하세요. 이번엔 프로그래머스 12953 N개의 최소공배수 문제를 파이썬으로 풀어보겠습니다. 문제 링크는 여기입니다. https://school.programmers.co.kr/learn/courses/30/lessons/12953?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 여러 수의 최소공배수는 각자의 최소공배수를 계속 구해주면 됩니다. 예를 들어, 2, 6, 8, 14 라고 한다면 2와 6의 최소공배수를 구하고, ---- 6 그 최소공배수인 6과 8의 최소공배수를 구하고, ----- 24 그 최소공배수인 24와..
프로그래머스 86051 Python / 없는 숫자 더하기 안녕하세요. 프로그래머스 86051 lv1 없는 숫자 더하기 문제입니다. 파이썬으로 풀어보겠습니다. 문제 링크는 아래입니다. https://school.programmers.co.kr/learn/courses/30/lessons/86051 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 푸는 방법은 몇 개 있겠습니다. 근데 어떤 방법을 써도 시간복잡도를 고려하지 않아도 될만큼 주어지는 숫자가 적습니다. 따라서 그냥 0부터 9까지 하나하나 있는지 검사하면 되겠습니다. 코드는 이렇게 되겠네요. def solution(numbers): answer = 0 ..
프로그래머스 77884 Python / 약수의 개수와 덧셈 안녕하세요. 이번엔 프로그래머스 lv1 77884번 약수의 개수와 덧셈 문제를 파이썬으로 풀어보겠습니다. 링크는 다음과 같습니다. https://school.programmers.co.kr/learn/courses/30/lessons/77884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 확실히 프로그래머스가 깔끔하고 설명도 자세해서 풀기는 편한 것 같습니다. 약수의 갯수를 구할 때는, 여러 방법이 있겠습니다만 가장 간단한 방법은 1부터 해당 숫자까지 반복문을 돌리고, 해당 숫자를 반복문 인덱스로 나눈 나머지가 0이면 약수입니다. 파이썬으로 코드를..
백준 2231 Python / 분해합 / 브론즈2 안녕하세요. 이번 문제는 백준 2231 분해합 문제입니다. 파이썬으로 풀어보겠습니다. 링크는 다음과 같습니다. https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 분해합을 구하기 위해서는, 숫자 + 숫자 각 자리 수의 합 을 구하면 됩니다. 파이썬을 이용하면, 숫자를 문자열로 변환 후, map 함수를 이용해서 한 글자씩 int로 바꿔준다면 간단하게 구할 수 있습니다. 1부터 시작해서 주어진 숫자가 될 때까지 반복문..
백준 1259 Python / 팰린드롬수 / 브론즈1 안녕하세요. 이번 문제는 백준 1259 팰린드롬수 입니다. 회문과 비슷한 문제겠네요. (소주만병만주소 와 같은..) 파이썬으로 풀어보겠습니다. 링크는 아래와 같습니다. https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 풀이 파이썬을 이용하면 짧고 간단하게 풀 수 있습니다. 리스트 슬라이싱을 이용해서, [::-1] 과 같은 형태면 역순정렬된 리스트가 나오기 때문입니다. reverse를 이용해서 같은지 비교해도 되겠습니다. import sys while True: ..
백준 1018 Python / 체스판 다시 칠하기 / 실버4 안녕하세요. 백준 1018 체스판 다시 칠하기 문제를 파이썬으로 풀어보겠습니다. 링크는 다음과 같습니다. https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 바꿔야 하는 갯수가 가장 적은 8x8 칸을 찾는 문제입니다. 처음 생각하면 막막하지만, 천천히 생각하면 어렵지 않습니다. 반복문을 써서, 8x8 을 일단 전부 검사합니다. 0 부터 N-7 까지, 0 부터 M-7 까지면 되겠죠? 시작점을 정하면, 거기로부터 8 x 8 칸 중에서 색칠..
백준 1085 Python / 직사각형에서 탈출 / 브론즈3 안녕하세요. 백준 1085 직사각형에서 탈출 문제를 python으로 풀어보겠습니다. 링크는 아래와 같습니다. https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 풀이 처음 문제를 보면 복잡하다는 생각이 드실 수도 있겠습니다. 다만 그림을 그려보거나 머릿속으로 상상해보면 매우 간단한 문제입니다. 간단하게 예제 1번을 그림으로 그려보았습니다. 0, 0 부터 10,3 까지의 직사각형이고, 현재 위치는 6,2 입니다. 가장 가까운 경계..
백준 1181 Python / 단어 정렬 / 실버5 안녕하세요. 백준 1181 단어 정렬 문제를 python으로 풀어보겠습니다. 링크는 다음과 같습니다. https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 보통의 문자열 문제들은 python으로 풀면 매우 간단하게 해결할 수 있습니다. 입력을 list로 받은 뒤, 중복 제거를 위해 set() 를 사용하고, 다시 list로 바꿔줍니다. 정렬을 위해 sort() 를 사용하는데, 일반적으로 sort를 사용하면 사전 순으로 정렬되게 됩니다...
프로그래머스 77484 Python3 / 로또의 최고 순위와 최저 순위 안녕하세요. 이번에는 프로그래머스 lv1 77484 번 로또의 최고 순위와 최저 순위 입니다. 링크는 아래와 같으며, Python을 이용해 구현했습니다. https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 ..