분류 전체보기 475

[Python] 파이썬 백준 boj 2609 " 최대공약수와 최소공배수"

최대공약수와 최소공배수 성공출처 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 47852 28357 23053 61.089% 문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 예제 입력 1 복사 24 18 예제 출력 1 복사 6 72 유클리드 호제법 number = list(map(int, input().split())) a = number[0] b = number[1] gcd=0 lcm=0 def gcd_g..

알고리즘 문제 2021.10.22

[Python] 백준 boj 2839 "설탕 배달"

설탕 배달 성공출처다국어 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 185385 61564 47937 33.920% 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는..

알고리즘 문제 2021.10.21

[Python] 파이썬 백준 boj 1316 "그룹단어 체커"

그룹 단어 체커 성공 시간 제한메모리 제한제출정답맞은 사람정답 비율 2 초 128 MB 67462 34678 29290 52.319% 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, ..

Python 2021.10.21

[Python] 백준 boj 2941 "크로아티아 알파벳"

크로아티아 알파벳 성공출처다국어 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 75317 33206 28497 45.114% 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩..

알고리즘 문제 2021.10.21

[Python] 백준 boj 4673 "셀프넘버" - 시간초과 해결

셀프 넘버 성공출처다국어 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 97988 48847 38728 49.539% 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 ..

Python 2021.10.21

[Python] Dynamic Programing(Dp 알고리즘) - 피보나치 수열

피보나치 수열이란 수학에서, 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. [위키백과] 이다!. 보통 피보나치 수열을 계산할 때 재귀로 많이 풀었는데, 재귀로 풀면 시간이 점점 증가하기 때문에 50이상은 구하기 힘들다. 이럴 때 쓸 수 있는게 동적 계획법, 즉 다이나믹 프로그래밍 이다. 동적계획법 (DP) 동적 계획법(Dynamic Programming)이란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 이것은 부분 문제 반복과 최적 부분 구조를 가지고 있는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간 내에 풀 때 사용한다. [위키백과..

Python 2021.10.21

[Python] DFS & BFS - DFS와 BFS를 쓰는 상황

자바로 dfs와 bfs를 공부한적이있는데, 파이썬으로 다시 해보면서 개념정리와, 어떤 상황에서 유리한지 정리해보고자 한다, DFS & BFS DFS란 자료의 검색, 트리나 그래프를 탐색하는 방법. 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색해가고 끝까지 탐색하면 다시 위로 와서 다음을 탐색하여 검색한다. [컴퓨터인터넷IT용어대사전] dfs는 그래프의 노드를 갈 수 있는 데 까지 끝까지 방문하는 것이다. 노드를 순서대로 목적지에 도달할 때 까지 방문하면서, 각 노드에서 또 방문할 수 있는 위치를 저장해 둔다. 노드가 끝까지 갔다가 다시 한칸 뒤로 돌아와, 갈 수 있는 방향을 탐색한다. 따라서 재귀적이고 / 스택을 이용할 수 있다. Depth First Search BFS란 자료의 검색, 트리나 ..

Python 2021.10.21

[TIL] 10.20-스파르타 내일배움캠프 38일차

TIL 1. 파이썬 문법 - isalpha - ord - chr - python map 오늘 하루 1. 좋았던 점 굉장히 오랜만에 til을 쓴다 프로젝트하느라 정신이 없었어... 오늘의 나는 TIL을 쓰고있다는 거 칭찬해 아 그리고 오늘 계획 95% 다 했다!! (문제 딱 하나를 못풀었음..ㅠ) 2. 아쉬운 점 으음... 없다 오늘은!! 나 자신 최고야! 3. 오늘 배운 점 파이썬 문법에 대해 많이 배웟다. 아 해시 함수의 충동 시 해결 방법인 체이닝 과 개방주소법은 내용을 흥미롭게 공부했다. 잊기 전에 여기에라도 기록해야징 해시 테이블 -> 해시 함수를 이용해 주어진 키 값을 특정한 값으로 치환하는데, -> 이 값을 내가 설정한 배열의 크기로 나누어서 그 나머지를 index값으로 가지게 한다. -> 배..

[파이썬] boj 4344 "평균은 넘겠지" - Python

평균은 넘겠지 성공출처다국어 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 256 MB 145128 52833 44442 36.785% 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 예제 입력 1 복사 5 5 50 50 70 80 100 7 100 95 90 80 70..

알고리즘 문제 2021.10.20

[파이썬] boj 1110 "더하기 사이클" - Python

더하기 사이클 성공 시간 제한메모리 제한제출정답맞은 사람정답 비율 2 초 128 MB 149190 70020 58318 47.328% 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올..

알고리즘 문제 2021.10.20