본문 바로가기

반응형

Python 코딩테스트

(65)
그리디: 백준 1783 병든 나이트 파이썬 문제: https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이: 나이트 문제라고 해서 DFS/BFS로 풀려고 하면 메모리 초과 오류가 발생한다. 체스판의 범위가 2,000,000,000 보다 작거나 같은 자연수이기 때문. N과 M의 값에 따라 나이트가 이동할 수 있는 경우의 수가 정해진다. N = 1 M이 몇이든 관계없이 이동할 수 없다. => 방문할 수 있는 최대 칸은 1 N = 2 M = 3일 때 최대 칸은 2, M = 5일 때 최대 칸은 3, 7일 때 최대 칸은 4이다. 그 뒤에 M이 아무리 커지더라도 최..
[프로그래머스] 124 나라의 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음엔 문제를 보고 좀 당황했었는데 3진법에서 한번 더 생각해보면 되는 문제였다. 124 나라의 특징은 - 1, 2, 4로만 숫자가 구성되어있다. - 4부터 자릿수가 늘어난다. - 7에서 앞자리 수가 바뀐다. - 10에서 앞자리 수가 2 커진다. 위 특징으로 규칙을 찾아보면 다음과 같은 규칙을 발견할 수 있다. 3으로 나눠지는 경우와 3으로 나눠지지 않는 경우, 두 가지 경우를 따져줘야 한다..
[프로그래머스] 오픈채팅방 https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 딕셔너리를 이용하면 쉽게 풀 수 있는 문제 입력이 위와 같이 "Enter" "Leave" "Change"로 주어진다. "Enter"와 "Leave"를 처리하는 건 쉽지만 까다로운 것은 "Change"이다. "Change"를 처리하기 위해 나는 딕셔너리를 사용해서 유저의 아이디와 닉네임을 관리했다. def solution(record): answer = [] for i in record:..
[프로그래머스] 문자열 압축 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 문자열을 몇 개 단위로 잘라서 압축해야 가장 짧은 문자열이 되는지 그 길이를 구하는 문제. 어떻게 하면 가장 짧은 압축 문자열을 구할 수 있을까?? aaaabbbbaaaabbbb는 8개 단위로 자르면 2aaaabbbb이고 4개 단위로 자르면 4a4b4a4b이다. 4개 단위로 잘랐을 때 압축 문자열이 더 짧다. 무조건 큰 단위로 자른다고 짧은 문자열이 되는 것이 아니기 때문에 다 구해봐야..
백준 17452 약수의합 파이썬(python) 문제: https://www.acmicpc.net/problem/17425 17425번: 약수의 합 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 풀이: 2022.01.13 - [Python 코딩테스트] - 수학: 백준 17427 약수의 합 2 파이썬(python) 수학: 백준 17427 약수의 합 2 파이썬(python) 문제: https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는..
수학: 백준 17427 약수의 합 2 파이썬(python) 문제: https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 풀이: 입력받은 N보다 작거나 같은 자연수의 약수들의 합을 구해야 하는 문제입니다. 이 문제에는 0.5초의 시간제한이 있어 일반적인 약수 구하는 알고리즘은 시간 초과가 발생합니다. 문제를 풀기위해 제곱근을 사용하는 약수 알고리즘을 사용했었는데 시간 초과가 발생했고 어떻게 하면 풀 수 있을지 고민을 많이 했던 문제입니다. 결국 구글링..
수학: 백준 4375 1 파이썬(python) 문제: https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 풀이: 이 문제는 1, 11, 111, 1111와 같이 1로 이루어진 수들로 나누어 떨어지는 수의 자릿수를 찾는 문제입니다. 입력을 무제한으로 받아야하기 때문에 try, except 문을 사용했고 EOF(end of file) 에러가 발생하면 종료되도록 처리해주어야 합니다. 2와 5로 나누어 떨어지지 않는 정수들은 모두 1로 이루어진 수들로 나누어 떨어지기 때문에 나누어 떨어지지 않을 경우를 생각할 필요는 없었고, num에 10을 곱하고 1을 더하는..
수학: 백준 1037 약수 문제: https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 풀이: 입력 받은 약수들을 정렬해서 맨 앞의 수와 맨 뒤의 수를 곱해주면 끝. 약수가 하나일 경우에는 제곱해주면 된다. 정답: import sys input = sys.stdin.readline n = int(input()) arr = list(map(int, input().split())) arr.sort() if(n == 1): print(arr[0] * arr[0]) else:..

반응형