알고리즘 공부
-
3009번 : 네 번째 점알고리즘 공부/백준 Python 코딩테스트 2021. 10. 13. 11:47
[ 문제 ] 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. [ Input ] 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. [ Output ] 직사각형의 네 번째 점의 좌표를 출력한다. [ 풀이 ] 위의 그림을 보면 직사각형의 좌표값은 저렇게 주어져야 한다. x 값과 y값만 따로 본다면 x 값은 (a, a, c, c)이고 y값은 (b, b, d, d)이다. 즉, x, y 모두 같은 값이 2쌍 씩 있어야 한다는 것이다. x값은 x값끼리, y값은 y 값끼리 따로 list 를 만들어 주고 그 값에 맞는 원소의 개수가 1개일 때 그 값이 우리가 구해야할 좌표의 값이다. [ 코드 ] x_l..
-
2480번 : 주사위 세개알고리즘 공부/백준 Python 코딩테스트 2021. 10. 13. 11:06
[ 문제 ] 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으..
-
1934번 : 최소공배수알고리즘 공부/백준 Python 코딩테스트 2021. 10. 13. 10:19
[ 문제 ] 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. [ Input ] 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000) [ Output ] 첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다. [ 풀이1 ] 단순하게 풀어보고 싶어서 쓴 코드이다. 이렇게 하면 시간..
-
10039번 : 평균 점수알고리즘 공부/백준 Python 코딩테스트 2021. 10. 12. 13:54
[ 문제 ] 상현이가 가르치는 아이폰 앱 개발 수업의 수강생은 원섭, 세희, 상근, 숭, 강수이다. 어제 이 수업의 기말고사가 있었고, 상현이는 지금 학생들의 기말고사 시험지를 채점하고 있다. 기말고사 점수가 40점 이상인 학생들은 그 점수 그대로 자신의 성적이 된다. 하지만, 40점 미만인 학생들은 보충학습을 듣는 조건을 수락하면 40점을 받게 된다. 보충학습은 거부할 수 없기 때문에, 40점 미만인 학생들은 항상 40점을 받게 된다. 학생 5명의 점수가 주어졌을 때, 평균 점수를 구하는 프로그램을 작성하시오 [ Input ] 입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다. 점수는 모두 0점 이상, 100점 이하인 5의 배..
-
2753번 : 윤년알고리즘 공부/백준 Python 코딩테스트 2021. 10. 12. 11:43
[ 문제 ] 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. [ Input ] 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다. [ Output ] 첫째 줄에 윤년이면 1, 아니면 0을 출력한다. [ 풀이1 ] if, else 한 구문에 조건을 다 넣을 수도 있지만 개인적으로 한 구문에 넣어서 한 row 가 길어지는 걸 좋아하지 않아서..
-
1789번 : 수들의 합알고리즘 공부/백준 Python 코딩테스트 2021. 10. 12. 11:23
[ 문제 ] 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? [ Input ] 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. [ Output ] 첫째 줄에 자연수 N의 최댓값을 출력한다. [ 풀이 ] 문제 이해만 잘하면 금방 풀 수 있는 문제! 자연수 N의 최댓값을 물어보는 것은 S를 만들기 위한 자연수의 갯수가 최대 몇개까지 필요한가 물어보는 문제이다. 자연수의 갯수가 최대가 되려면 가장 작은 수부터 차근차근 더해줘야 한다. 즉, 1부터 하나씩 커지며 숫자를 더해주는 것이다. 예시로 나온 200 으로 설명을 하자면, 1+2+3+...+19 = 190, 1+2+3+...+19+20 = 210이다. 1+2+3+..+19+10 = 20..
-
11653번 : 소인수분해알고리즘 공부/백준 Python 코딩테스트 2021. 10. 8. 15:47
[ 문제 ] 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. [ Input ] 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. [ Output ] N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. [ 풀이 ] 소인수분해 문제는 코딩공부할 때 무조건 풀어보는 문제인 것 같다. 오랜만에 보니 엇? 했지만 엇! 할 것도 없었다 ㅋㅋ 소인수는 1보다 큰 자연수로 이루어져야 하므로 소인수는 2부터 점점 커지도록 한다. 소인수를 1만큼씩 키우면서 input의 인수가 될 수 있는지 확인할 것이다. -> input을 소인수로 나눴을 때 나머지가 0이면 인수이다. 인수를 판별했다면 해당 인수로 input을 나누어서 값을 updat..
-
2935번 : 소음알고리즘 공부/백준 Python 코딩테스트 2021. 10. 8. 13:43
[ 문제 ] 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 분노하였다. 이렇게 학생들이 수업 시간에 떠드는 문제는 어떻게 해결해야 할까? 얼마전에 초등학교 선생님으로 취직한 상근이는 이 문제를 수학 문제로 해결한다. 학생들을 진정시키기 위해 칠판에 수학 문제를 써주고, 아이들에게 조용히 이 문제를 풀게 한다. 학생들이 문제를 금방 풀고 다시 떠드는 것을 방지하기 위해서, 숫자를 매우 크게 한다. 아직 초등학교이기 때문에, 학생들은 덧셈과 곱셈만 배웠다. 또, 아직 10의 제곱꼴을 제외한 다른 수는 학교에서 배우지 않았기 때문에, 선생님이 써주는 수는 모두 10의 제..