[백준 문제풀이 : 5086번] 파이썬 - 배수와 약수
·
Algorithm/Baekjoon
일반 수학문제들에 비해 난이도가 굉장히 쉬워졌다. 보자마자 코드를 바로바로 써내려갈 수 있었다. 처음에 썻던 코드가 바로 이것. while True: a,b = map(int, input().split()) if a and b == 0: break if b % a == 0: print("factor") elif a % b == 0: print("multiple") else: print("neither") 근데 자꾸 런타임 오류라고 뜬다. 뭐가 문제인지 모르겠어서 구글링도 해보고 했는데 언뜻보기에는 다 똑같은 식으로 보인다. 딱 한가지 다른 점이있다면 나는 a and b == 0 으로 썻지만 다른사람은 둘다 0과 같다고 따로 표기를 한 점일까? while True: a,b = map(int, input()..
[백준 문제풀이 : 2720번] 파이썬 - 세탁소 시장 동혁
·
Algorithm/Baekjoon
단순히 케이스 수 만큼 반복하는 반복문실행 이후, 몫과 나머지를 구하는 식만 써서 프린트만 하면 될 것 같다. t = int(input()) for _ in range(t): c = int(input()) Q = c // 25 q = c % 25 D = q // 10 d = q % 10 N = d // 5 P = d % 5 print("{0} {1} {2} {3}".format(Q,D,N,P)) 이것만으로도 충분히 정답을 받을 수 있지만 뭔가 좀 더 짧게 쓸 수 있는 방법은 없을까? 구글링 해서 조금 더 좋은 정답을 알아보기로 했다. n = int(input()) for _ in range(n): money = int(input()) for i in [25, 10, 5, 1]: print(money//i..
[백준 문제풀이 : 11005번] 파이썬 - 진법 변환2
·
Algorithm/Baekjoon
이 전의 문제에서는 조금 생각도 하면서 고생했었는데 이번에는 전의 문제와 다르게 반대로 숫자를 진법으로 변환하는 문제이다. 이 문제는 생각보다 굉장히 간단하겠다 싶었다. 단순히 나누기를 반복하며 몫과 몫을 나누어 해당 진법의 단어로 표현해주기만 하면 되는 문제이기 때문. 숫자가 얼마나 클지 모르기 때문에 확정된 반복횟수를 정하는 것은 무리가 있다고 판단하여 while문을 활용하였다. word = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" n, b = map(int, input().split()) y = 0 result = [] while n >= y : y = n % b n = n // b result.append(word[y]) result = result[::-1] for ..
[백준 문제풀이 : 2941번] 파이썬 - 크로아티아 알파벳
·
Algorithm/Baekjoon
먼저 주어진 크로아티아 알파벳을 담은 리스트를 작성해주고, 단어를 입력받은뒤, for문을 이용해 크로아티아 리스트를 돌려주고 그곳에서 해당 단어를 한자리 문자 아무거나 바꿔준다(replace) 그리고 바꿔준 문자의 개수를 출력해주면 된다! croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] word = input() for i in croatia : word = word.replace(i, '*') # input 변수와 동일한 이름의 변수 print(len(word))
[백준 문제풀이 : 10988번] 파이썬 - 펠린드롬인지 확인하기
·
Algorithm/Baekjoon
처음에는 리버스를 활용할 생각을 못하고 리스트로 만들어 하나하나 쪼개서 반반 나눈 리스트를 만든 뒤 두 리스트가 같은지 확인하는 식으로 써내려 나갔다. s = input() n = 0 front = [] back = [] if n % 2 == 0 : // 입력한 단어가 홀수인지 짝수인지 구분하기 n = len(s)//2 for i in range(len(s)): if i+1 n : back.append(s[i]) else: n = len(s)//2+1 for i in range(len(s)): if i+1 n : back.append(s[i]) back_1 = back[::-1] //뒷부분은 역순으로 바꿔서 같은지 확인하기 result = ..
[백준 문제풀이 : 5622번] 파이썬 - 다이얼
·
Algorithm/Baekjoon
처음에는 길게 이프와 엘이프를 이용해서 각 알파벳별로 해당 시간을 더해주는 식을 짯었는데 작동은 하는데 왜인지 모르겠지만 더해지는 값이 이상하게 나왔다 1/2수준으로 나옴.. 결국 이유는 찾지 못하고 다른 방법으로 풀어야겠다 싶어 구글링을 해본 결과 다들 다이얼이라는 변수를 지정하여 리스트를 'ABC','DEF'... 이런식으로 만들어 놓고 단어s가 해당 다이얼에 있다면 타임을 더해주는 이중 포문을 이용하여 푸는 것을 확인했다. 그래서 이중 포문을 이용하여 똑같이 풀어보았다. s = list(input()) sum = 0 dial = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] #다이얼을 만들어줌 for j in range(len(s)): #입력한 단어의 ..
[백준 문제풀이 : 2908번] 파이썬 - 상수
·
Algorithm/Baekjoon
처음에는 두 수를 입력받아서 리스트로 변환하여 reverse를 이용하여 풀려고 했었다. 근데 리버스를 이용해서 하려고하니 자꾸 뭔가 복잡해지고 꼬이고 잘안풀려서 다른사람들은 어떻게 풀었는지 확인해봤는데 정말 간단하게 [::-1]을 이용하여 역순으로 바꾸는 방법이 있었다... 그래서 해당 방법을 이용하여 정말 짧은 코드로 풀 수 있었다. a,b = input().split() a = int(a[::-1]) b = int(b[::-1]) if a > b : print(a) else : print(b)
[백준 문제풀이 : 10809번] 파이썬 - 알파벳 찾기
·
Algorithm/Baekjoon
소문자로만 이루어진 단어 하나를 입력받고, 그 소문자가 알파벳 a~z를 대조했을때 단어의 a~z가 단어의 몇번째자리에 위치했는지 파악하는 문제이다. 만약 a~z중에 단어에 없는 알파벳이 있다면 해당알파벳의 자리는 -1로 표기한다. 우선 for문으로 a~z까지 26번의 반복문을 돌려 리스트(단어)가 존재한다면 또 다시 반복문을 돌리는 if문을 활용했다. 존재하지 않는다면 -1로 표기하는 if문을 만들고 존재한다면 단어의 개수만큼 반복문을 다시 돌려서 몇번째 자리에 존재하는지 표기하는 반복문을 돌려준다. s = str(input()) list_s = list(s) for i in range(26): #알파벳의 개수만큼 반복 if chr(i+97) in list_s: #알파벳a의 아스키코드인 97만큼 더한숫자..