백준 파이썬 코딩테스트 (분수찾기)
·
코딩테스트/BaekJoon
백준 1193번 문제분수찾기문제 풀이1.우선은 이 문제를 위해서 규칙성을 찾아보았다.이미지로 되어있어서 규칙의 파악은 쉬웠다.자 홀수번대는 분자가 메인, 짝수번대는 분모가 메인이다. 이 말인 즉슨 메인이 최대 값이라는 의미이다.1/1은 패스를 하고 3을보자. 3은 홀수니까 3/1로 스타트를 한다.이때 3/1 다음은 각 분자 -1, 분모 +1을 한 2/2 그리고는 1/3이다. 다음은 4 즉 짝수니 1/4로 되는 것이다. 그리고 이를 통해서 최대 반복값도 알 수 있다. 1/4는 최대 4번 1/4 > 2/3 > 3/2 > 4/1 이 최대 갯수이다. 자 이를 이용해보자.우선 area매개변수에 while을 사용해서 area가 인풋보다 커지면 스톱시킨다.area에는 반복마다 area+1을 더한다. 즉 2번 반복하..
백준 파이썬 코딩테스트 (벌집)
·
코딩테스트/BaekJoon
백준 2292번벌집문제 풀이1.이 문제는 정사각형이 아니고 벌집 즉 육각형으로 대체된 문제이다.벌집이 한겹씩 추가될 수록, 6만큼 더 커지는 형식이다. 내가 생각한 이 문제의 풀이는 범위이다.우선 입력값을 n으로 잡는다.for 반복문은 범위가 필요해서, while을 사용해서 반복문을 진행한다.결국 += 6i 가 되는 만큼, n이 이 범위보다 작다면 포함이 안된것으로 본다. 그러니 while n 이런식으로 하면 될 것 같다. 결과import sysn=int(sys.stdin.readline().strip())area = 1result = 1while area Coding_Test/백준/Bronze/2292. 벌집 at main · K-MarkLee/Coding_Test · GitHub Coding_..
백준 파이썬 코딩테스트 (중앙 이동 알고리즘)
·
코딩테스트/BaekJoon
백준 2903번 문제중앙 이동 알고리즘문제 풀이1.이 문제도 수학적으로 접근해서 식을 먼저 생각해야하는 문제이다. 우선 이 문제의 식을 한번 생각해 보았다.결국 기존의 점 사이에 점이 추가되는 방식이고, 갯수를 구할때, 중복이 되지않게 하려면 그냥 n*n의 방식 (정사각형)으로 구하면 된다. 즉 한변에있는 점의 갯수만 알면 된다는 것이다.우선 처음에 구한 식은 이전 값에서 -1 한 후, 2를 곱하고 +1을 하는 방법이다.즉 n이 3이라면, 그전의 값 n이 2인경우의 한변의 점은 3개. 여기서 -1을 한 2에서 2를 곱한 후, +1을 하면 5.이런식으로 생각했다. 여기서 보니, 항상 2를 곱하고 +1을 하기 때문에 홀수가 나오게 되고 이는 (2^n)+1을 하면 된다라는 결론을 볼 수 있다. 그러면 나온 값..
백준 파이썬 코딩테스트 (세탁소 사장 동혁)
·
코딩테스트/BaekJoon
백준 2720번 문제세탁소 사장 동혁문제 풀이1.이 문제는 몫과 나머지를 풀 수 있으면 쉽게 풀 수 있는 문제이다. 거스름돈은 결국 몫이 필요 갯수 이고, 나머지는 남은 돈이다. 즉 change에 0.25, 0.10, 0.05, 0.01을 넣고 하나씩 꺼내서 몫을 저장, 나머지를 그 다음 수로 넘기는 걸 반복하면 된다. 이를 result에 넣고 ' '를 join해서 결과를 출력하면 된다. 결과import sysn = int(sys.stdin.readline().strip())change=[25,10,5,1]for _ in range(n): money = int(sys.stdin.readline().strip()) result = [] for ch in change: a, m..
백준 파이썬 코딩테스트 (진법 변환 2)
·
코딩테스트/BaekJoon
백준 11005번 문제진법 변환 2문제 풀이1.이 문제는 이제 10진법의 숫자 N을 B진법으로 변환을 하는 과정이다. 이는 진법의 변환만 알면 쉽게 할 수 있다.결국 몫과 나머지를 구해서, 몫이 0이 될때까지 나누기를 하면 되는 것이다. 즉 divmod를 사용해서, 몫과 나머지를 구한 다음, 나머지는 따로 result리스트에 저장.몫은 교체하면서 0이 될때까지 반복한다. 이때, 반복문은 조건을 정할수가 없으니, while True로 조건이 된다면 break하는 방식으로 한다. 최종적으로 모든 나머지가 result 리스트에 들어가게 된다면, 좌우반전 즉, result[::-1]을 한다.이유는 제일 우측이 첫번째가 되야 하기 떄문. 그 후, 0-9, A-Z가 들어있는 문자열에서 result의 값을 인덱스로 ..
파이썬 (N진법에 대해서)
·
용어정리/Python
파이썬 개념N진법에 대해서N진법이란?우선 n진법은 숫자를 표현하는 방식이다. 즉 포맷인것이다.우리가 쓰는 숫자는 10진법 즉 0-9의 범위를 가지고 있는 진법이며, 컴퓨터는 2진법 즉 0과 1 로 이루어진 진법을 사용한다. 진법은 0 ~ n-1의 범위를 갖는다. 문제를 풀기 위해서 수학적으로 진법 변환을 할 줄 알아야 하는데, 보통은 10진법을 기준으로 변환을 한다.예를들어 우리가 10진법으로 30을 표현하는데 이를 12진법으로 변경한다고 가정하자. 30을 12로 나누게 되면 몫은 2 나머지는 6이 나오게 될 것이다.이러면 2*12^1 + 6*12^0 이 되게된다. 이때, 더이상 나눠지지않는다면 이는 0의자리 몫은 1의자리 반대에서 부터 올라간다.그러면 10진법 30은 12진법에서 26이 되게 된다. 여..