본문 바로가기

[파이썬]알고리즘공부

(12)
백준[11021] A+B -7 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 풀이 각 케이스 마다 "Case #x:" 를 붙여서 출력한 다음, A+B 를 출력해야 하며 테스트 케이스 번호는 1부터 시작한다. 첫줄에 테스트 케이스의 개수를 주어야 하므로 변수 t 를 input으로 입력 받은 뒤 정수형으로 변환해준다. 테스트 케이스 개수가 곧 x 값이므로 for문의 변수값을 이용하여 case 번호를 붙여준다. for 문 안에 입력받을 a,b를 split()으로 각 각 입력받고, 정수형으로 변환한다. i 는 정수형이기 때문에 str()으로 감싸주고 문자열을 이어야 한다. print를 이용하여 예제문을 출력한다. 문제를 풀면서 새롭게 알게 된 것: 처음에 i 를 + 연산자를 이용하여 이으려고 하였으나 정수..
백준[2742] 기찍N 문제 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 풀이 앞서 풀었던 N찍기와 마찬가지로 range 함수를 활용하는 문제이다. range(시작값, 종료값, 간격) 에서 간격이 -1이라는 것은 n 부터 0+1 까지 1칸씩 이동하여 나타내는 것을 말한다. 따라서 n 부터 0+1 인 1 까지 내림차순으로 출력된다. 풀면서 알게 된 점 : range(start,stop,step)
백준[2741] N찍기 문제 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 풀이 입력값을 정수형으로 받기 위하여 int 함수로 감싼다. range함수는 range(시작값, 종료값) 인데, 종료값은 그 값의 앞까지만 출력하기 때문에 주어진 수를 출력하기 위해서는 +1 해야 한다. print() 함수를 이용하여 i 값을 출력하면 예제 출력값이 나온다.
백준[15552] 빠른 A+B 문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다. 또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다. 풀이 각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력해야 하는 문제이다. 예제 출력 값이 5개인 것으로 보아 예제 입력의 첫번째 값은 for 문의 반복횟수..
백준 [8393] 합 문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 풀이 입력값인 n 을 첫째줄에서 받는다. 입력값을 받을 때 정수형으로 변환하는 것 잊지 말기 1부터 n까지의 합을 받을 변수(sum)을 선언해 초기 값으로 0을 준다. for 문 앞에 변수 만들어 놓는 거 잊지 말기. for문에서의 range(초기값,마지막값,간격) 는 사용할 때 주의할 점이 있다. 마지막 값은 주어진 숫자의 앞의 값을 의미한다. 초기값의 기본값은 0 이다. 따라서 마지막값은 주어진 값에서 -1 하여 생각해야 한다. 입력값에서 1부터 n까지의 합이라고 했으니까 n을 포함시키기 위해서는 n+1 을 해야한다. n이 3이라고 가정하면 1부터 3까지의 합을 구하게 된다. for문이 돌아가는 것을 자세히 나타내면, i = ..
백준 [10950] A+B - 3 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 풀이 for문을 이용한 문제이다. 각 줄에 A 와 B가 주어지도록 하기 위해서 for 문 안에서a 와 b를 입력 받는다. map을 이용하여 문자형인 숫자들을 숫자형으로 변환하여 각 각 입력받는다. for문에 임의의 변수명을 짓고 t 만큼 반복하도록 range를 설정한다. 출력할 a+b 값을 print함수에 출력한다.
백준 [2884] 알림시계 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로..
백준 [14681] 사분면 고르기 문제 풀이 사분면을 if 문을 이용하여 표현한다. 입력 값으로 "첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)" 라는 조건이 있어서 두 변수를 한줄 씩 나누어 정수형으로 변환하였다. 각각의 사분면의 특징을 이용하여 조건을 작성한다. 1사분면 : x > 0 , y > 0 2사분면: x 0 3사분면: x 0 , y < 0 print 함수를 이용하여 주어진 출력값을 출력한다.