나는 <iostream> 헤더파일을 선언해서 코딩하는 것을 좋아하기 때문에이것과 코드가 동일하지만 앞으로 <iostream> 로 헤더를 선언하여 문제를 풀이할 예정...물론 속도는 조금 더 느릴 수 있지만이 코드를 main함수 안에다가 제일 처음에 적어주면
원래는 std::cout<<"강한친구 대한육군" ...... 이런식으로 작성해야 하지만main함수 위에 using namespace std;로 std를 namespace로 이용한다고 선언해주면 코드에 std를 매번 적어줄 필요가 없다!
\\n은 표준 입력에서 줄을 바꿔서 출력해준다.\\t는 표준 입력에서 indent(들여쓰기)를 해준다. 한글 문서에서 Tab키를 누르는 것과 같음.\\r는 Carriage return이라고도 부르는데 커서를 가장 앞으로 보낸다.즉, print("Hello World!"
이전 문제(10171번)에서도 풀이와 마찬가지로 Escape code에 유의하여 작성하면쉽게 풀 수 있었다. \\,'," 이 세가지 문자가 출력되게 하는 것이 이 문제의 유의점이다. 참고로 내 velog의 파이썬 기초에서도 설명했지만 위 풀이를 다르게 작성할 수도 있다
파이썬에서 문자열을 입력받는 input()이라는 함수가 있다. 이 함수는 '문자열'로 입력을 받는다. split()라는 함수는 괄호안의 문자로 문자열을 끊어주는 역할을 한다.문제에서 변수를 A, B로 지정을 했는데 이는 입력받는 문자열을 잘라낸 후 각각 잘려진 문자열을
1000번과 풀이가 동일하다. 단 +에서 -로 바뀌었을뿐.이 친구도 마찬가지로 1000번과 풀이는 동일!
얘도 그냥 1000번, 1001번과 마찬가지로 두 정수 입력받아서 곱셈만 해주면된다.
이 문제는 다른 연산 문제와 다르게 소수점 아래 몇자리까지 출력해야 하는지 조절을 해야한다. 파이썬에서는 그냥 나눗셈(/)연산을 하면 소수점 아래 16자리까지 출력이 된다. 그래서 문제에서 요구하는 상대오차 10-9을 만족하기 때문에 신경쓰지 않아도 된다.처음 풀이할
이 전의 연산 문제들에서 첫번째 줄에 A, B = input().split() 으로만 적었었는데찾아보니 원하는 변수를 바로 정수형으로 바꿔서 split해주는 함수인 map()을 알게되었다.A, B = map(int, input().split()) 에서 첫번째 인자는 어
처음에 풀었던 풀이는이거였는데 런타임 에러(Value Error)가 떴다. 이유는 찾지 못하였음...결과도 오류없이 잘 나온다...이 부분에 대해서는 좀 더 공부가 필요한 것 같다.
조건문 if를 이용하여 대수비교를 하는 문제이다. 어려운 문제는 아니니 설명은 스킵
연도를 입력받아서 4의 배수이면서 100의 배수가 아니면 윤년, 또는 400의 배수이면 1을 출력하고 아니라면 0을 출력하는 문제이다.경우의 수를 나눠보면4의 배수100의 배수400의 배수 : 윤년 (1출력)400의 배수가 아님 : 윤년이 아님 (0출력)100의 배수가
x>0, y>0 : 1사분면x<0, y>0 : 2사분면x<0, y<0 : 3사분면x>0, y<0 : 4사분면
HH : MM 에서1시 ~ 23시45분 ~ 59분 : 45분을 빼줘도 시침은 안바뀌고 분침만 45분 전으로 바꾸면 된다.0분 ~ 44분 : 45분을 빼주면 시침이 바뀐다. 1만큼 빼주면 된다.0시45분 ~ 59분 : 마찬가지로 시침은 안바뀐다.0분 ~ 44분 : 이 경
N을 입력받아서 i라는 변수가 1에서 9까지 반복문을 돌며 print함수를 실행한다.그러면 구구단의 N단이 출력된다.나는 항상 문제를 풀이한 후에 다른 사람들의 풀이를 찾아보는데 원래 C++유저였던 나에게 새로운 문법을 알게되었다.바로 f-string!! 사용법은 다음
for i in range(T) 라고 하면 T만큼 for문을 돌린다고 생각하면 된다.T = 3 이면 3번 for문을 돌린다.
여기서 볼 수 있듯이 for i in range(N) 은 0부터 N-1까지이다.따라서 합을 구할 땐 sum = N 으로 선언해주면서 마지막 숫자인 N이 안더해지는 불상사를 방지해준다!while (N)을 설명하자면, while문에서의 괄호안의 조건을 검사했을 때 true
백준 알고리즘 풀이를 올리며 처음으로 import가 나왔다.import는 파이썬 표준 라이브러리 모듈을 가져온다.여러 라이브러리가 있지만 수학식을 쓸 때는 보통 numpy, cmath, math 를 많이 쓴다.numpy는 행렬을 표현하기 좋고, cmath는 복소수, m
쉬운 문제니 설명 스킵
이것은 N에서 0이 되기 전까지 iterator가 -1씩 증가하며 반복하라는 뜻이다.즉 정수 i가 N부터 1까지 1씩 빼지면서 반복문을 돌게 된다.예를 들어서라고 한다면 '0에서 11전까지(10까지) 2씩 증가시키며 반복문을 실행하여라' 라는 뜻이다. i는 0, 2,
백준 15552번 문제 설명했듯이 반복문 안에서 입력을 여러번 받을 때 sys.stdin.readine().split()으로 입력을 받아주면 실행 속도가 빨라진다.\`print(f"Case
백준 11021번 문제와 똑같은 문제인 것 같다. 그냥 출력 형식이 다를 뿐....
Python 풀이 > C++ 풀이 >
a.rjust(N)은 N칸을 확보하고 오른쪽 정렬을 시켜주는 함수이다. 예를 들어이 코드는 전체 10칸을 확보하고 오른쪽 정렬로 hello를 출력하라는 의미이다.즉, hello는 5자이고, 공백이 5칸이 생기게 된다.rjust(10,'.')라고 하게 되면 위에 코드와
변수 A를 list로 만들어서 입력을 split()으로 잘라 리스트의 각 인덱스로 매핑한다.그렇게 리스트를 만들어 반복문을 돌려서 리스트의 각 원소가 X보다 작으면 출력해준다.파이썬에서는 좀 더 쉽게 코딩할 수도 있다.A를 map의 주소값을 담은 리스트로 저장하고 출력
입력에서 A, B는 0보다 크고 10보다 작은 정수이므로 합이 0이 되는 경우는 없다. 따라서 a = 0, b = 0일 경우 합이 0이므로 break를 걸어서 while문을 탈출시키면 된다.if (!(A+B)) break; 이 부분은 전에도 설명한 적이 있는데, if문
C언어에서의 try ~ catch 구문과 비슷하다. 쉽게 얘기하면 if문과 비슷하다.try문을 실행하는데, 오류가 발생하면 except문으로 간다.위의 코드를 그냥이렇게 작성해 버리면 실행은 된다. 내가 콘솔창을 닫을 때까지....그런데 여기서 a와 b를 int형으로
한 줄씩 풀이해 보자.cnt = 0 싸이클이 몇번 돌았는지 확인하기 위한 변수이다. 아래 while문을 한번 돌 때마다 1씩 추가된다.old = int(input()) 기존 숫자를 입력받는 변수이다. 예제에서는 26을 입력했다.new = old 다음 숫자를 저장하는 변
min(num) 은 리스트 num에서 최소값을 반환하고 max(num)은 최대값을 반환하는 함수이다.for문과 if문을 통해 따로 리스트를 만들지 않고 가장 처음 입력받는 x값을 최소(min), 최대(max)로 설정하고 새로운 입력이 들어올 때마다 그 값이 min보다
List Comprehension(LC)를 이용하여 두줄로 풀이하였다.쉽게 설명하자면, numList = \[value for value in range(9)]는 와 같다.풀이의 numList = \[int(input()) for \_ in range(9)]에서numL
먼저 A, B, C를 입력받는다.그 후 dictionary라는 컨테이너를 이용하여 결과값에 각 숫자가 몇개 있는지 확인할 것이다.정수로 결과값을 다루기엔 복잡하니까(불가능하지는 않음) 문자열로 문제를 해결할 것이다. 따라서 res변수에 A, B, C를 곱한 값을 문자열
set은 리스트, 딕셔너리, 튜플과 같이 데이터를 담는 컨테이너 중 하나이다. set의 특징은1\. 중복을 허용하지 않는다.2\. 순서가 없다.(unordered collection)set은 순서가 없기 때문에 인덱싱(indexing)을 할 수가 없다. set은set
$N$ (과목 개수)$A_k = A_1, A_2, ... , A_m , ... , A_n$ (각 과목의 점수$A_m$은 과목 최고 점수)$B_k = (A_1/A_m)100, (A_2/A_m)100, ..., (A_n/A_m)\*100$ (최고 점수를 기준으로 하는 새로
'O'의 연속된 개수만큼 점수가 올라가므로 string형 변수 ox에 퀴즈 결과를 입력한다. 그 후 ox를 처음부터 끝까지 돌면서 정답인 것의 개수를 세는 동시에 점수도 올려준다.연속된 'O'가 1개일 때 : 1점연속된 'O'가 2개일 때 : 1점 + 2점연속된 'O'
score리스트에 예제 입력에서 보이는대로 학생 수와 각 학생의 점수를 입력하여 리스트화해서 저장한다.그 다음 평균을 구해서 평균보다 점수가 높은 학생의 수를 구한다.마지막으로 그 비율을 구해서 출력하면 된다.어려운 문제는 아니지만 포멧팅의 개념을 잠깐 설명하자면f-s
Python 풀이 > C++ 풀이 >
d(n)은 어떤 숫자(생성자)를 이용하여 새로운 숫자(생성자를 가진 숫자)를 만드는 함수이다. n을 10으로 계속 나눠가며 나머지를 원래 숫자에 반복문이 끝날 때까지 더해준다. 그러다 보면 일의 자리수가 계속 더해지는 것을 볼 수 있다. (직접 계산해 보면 나올 것이다
한 줄로 끝낼 수 있는 문제이다. ord라는 함수는 문자를 Ascii코드로 변환해 주고, chr라는 함수는 반대로 Ascii코드를 그에 맞는 문자로 변환해 준다.ord는 ordinal 의 약자이고 chr는 character 의 약자이다.여기서 Ascii의 뜻은 다음과
참고로 숫자들의 합을 sum으로 했지만 내장함수 sum과 똑같기 때문에 그냥 s로 써줬다. 변수로 sum을 선언하면 나중에 함수sum을 사용하려고 할 때 오류가 나기 때문에 변수명을 다르게 해주는게 낫다.
여러 풀이 방법이 있지만 가장 처음 생각 난 방법으로 풀어보았다.dictionary로 각 알파벳 소문자와 인덱스를 묶어서 관리하는게 편해보였다.그래서 일단 각 알파벳을 key, -1을 value로 설정해 놓고 단어 S의 마지막 문자부터 처음 문자까지 역방향으로 돌면서
어렵지 않은 문제
이 문제는 그냥 dictionary나 리스트로 그 값의 빈도 수를 저장해서 풀이하면 된다.그러나 '리스트나 문자열 등에서 최빈값을 찾아내 주는 함수가 있지 않을까?' 라는 호기심에 구글링을 해봤고 역시나 있었다! 참고 사이트(클릭)collections라는 모듈에서 Co
input()으로 단어를 입력 받고 split()함수로 공백을 기준으로 나눠서 리스트 형태로 저장한다.이제 만들어진 리스트의 len(length)을 출력하면 끝이다.예전에 풀어놨던 거라 왜 다 소문자로 바꿨는지 기억은 안나지만 첫번째에 나오는 for문은 삭제해도 무방할
split()을 해주면 ( )안의 매개체를 기준으로 문자열을 나눠서 리스트로 저장하기 때문에 s는 리스트로 저장이 된다. 문제에서 입력이 2개이므로 s0와 s1 변수로 각 숫자를 int형 변수로 변환하여 저장할 건데, 문자열 인덱싱을 해줄 수 있다. s\[0]\[::-
그냥 무식하게 단어를 딕셔너리를 이용해 매핑한 후 단어를 입력받고 단어의 각 문자가 어떤 숫자와 연결되는지 출력해주면 끝다른 사람들은 리스트로 풀었다.이런 식으로 풀어도 된다. 풀이는 거기서 거기이것도 마찬가지로 파이썬에서 딕셔너리와 비슷한 map을 이용해서 풀었다.
문제에서 표에 있는 크로아티아 문자들을 하나의 문자로 본다고 하였으니replace함수에서 길이가 1짜리인 아무 문자나 입력하면 된다. 공백도 되고 '\*', '&', '^' 등등... '-'나 '='는 혹시나 변환된 후 다시 크로아티아 문자로 인식될 수도 있으니 안쓰는
Python 풀이 > if 조건문은 위에서부터 차례로 조건을 만족하는지 확인한다. 조건이 맞다면 그 문장을 실행하고 if문을 탈출한다. 즉, 조건을 만족한 순간 그 아래에 있는 조건은 확인하지 않는다. 만약 이 문제를 높은 점수 순으로 조건을 설정하면 어떻게 될까?
Python 풀이 > 살짝 까다로운 문제였다. 접근법은 먼저 처음 나왔던 문자가 연속되지 않은 문자 뒤에 오는가를 체크하면 된다. a a b b b c c d d e c
$A + Bx < Cx$ ($A$는 고정 비용, $B$는 생산 비용, $C$는 노트북 판매가, $x$는 판매량이다.)위 문제를 식으로 표현하면 이렇게 된다. $x$대를 생산하면 1대를 생산하는데 필요한 생산 비용 $B$만큼 곱해주고, 총 판매가도 $C$만큼 곱해주