목록전체 글 (317)
지나가던 개발자

제목만 보고 A + B - 3을 계산하는 문젠지 알았는데 A + B 문제 시리즈의 3탄이었다... ㅋㅋ test_case = [] for i in range(int(input())): test_case.append(list(map(int, input().split()))) for i in range(len(test_case)): print(sum(test_case[i])) Python의 sum() 함수는 리스트 내의 모든 요소들의 합을 구한다.

나는 정 상 수~ 백발백중하는 명 사 수~ ab = input().split() for i in range(2): ab[i] = int("".join(reversed(list(ab[i])))) if ab[0] > ab[1]: print(ab[0]) else: print(ab[1]) 두 수를 입력받아 각 수를 뒤집은 뒤 뒤집은 수 중 a가 크면 a를, b가 크면 b를 출력한다.

이 문제는 뭔가 스토리가 있는 것 같은데 엄청난 부자1 문제를 안풀어서 잘 모르겠다. nm = list(map(int, input().split())) print(nm[0]//nm[1]) print(nm[0]%nm[1]) 입력받은 두 수를 나눈 몫과 나머지를 출력한다.

print(ord(input())) Python의 ord() 함수는 문자열의 아스키 코드 값을 반환한다.

입력받은 숫자를 나누어 합해서 출력하면 된다. input() print(sum(list(map(int, list(input()))))) 입력받은 문자열을 리스트로 바꾼 뒤 리스트 요소들을 다 int 형태로 바꿔준 후, 그 리스트의 합을 구했다.

굉장히 친절한 문제이다. 입력받은 수 9개 중에서 가장 큰 것과 그게 몇번째로 입력됐는지 출력하면 된다. numbers = [] for i in range(9): numbers.append(int(input())) print(max(numbers)) for i in range(9): if numbers[i] == max(numbers): print(i+1) break 입력받은 수 9개를 numbers 리스트에 넣고, 그 중 가장 큰 요소와 그게 몇번째로 입력되었는지 출력하였다.

이렇게 생긴 문제이다. 최소공배수에 관한 내용은 저번에 다뤘던 것 같다. import math for i in range(int(input())): numbers = list(map(int, input().split())) print(math.lcm(numbers[0], numbers[1])) math 모듈의 lcm() 함수는 두 수의 최소공배수를 구하는 함수이다.

풀어 보자. n = int(input()) i = 1 while n != 1: if n % 2 == 0: n = n // 2 else: n = 3 * n + 1 i += 1 print(i) 짝수면 n // 2, 홀수면 3n+1의 연산을 수행한다. 어제 푼 문젠데 귀찮아서 안올리다 이제야 올린다.

보자마자 이건 굉장히 쉬운 문제라며 자만했다. a = list(input().upper()) p = [] q = 0 for i in range(len(a)): n = 0 for j in range(len(a)): if a[j] == a[i]: n += 1 if n == q: q = n p.append(a[i]) elif n > q: q = n p = [] p.append(a[i]) if len(set(p)) != 1: print("?") else: print("".join(set(p))) 리스트 내 가장 많은 요소를 찾는 알고리즘을 직접 만들어 보았다. 이렇게 코드를 짜고 백준에 제출해 보았더니, 시간 초과가 떴다. ㅠㅠ. def solution(a): answer = a[0] for i in range..

공백을 기준으로 리스트를 만든 뒤, 그 리스트의 길이를 구하면 될 것 같아 보이는 문제이다. print(len(input().split())) 파이썬에는 "문자열.split()"라는 함수가 있다. () 안의 문자를 기준으로 문자열을 잘라 리스트를 만드는 함수이다. !

음... ab = list(map(int, input().split())) print(ab[0]/ab[1]) 코드 설명이 딱히 필요없는 간단한 문제입니다. 와!

진짜 코드를 딱 문제에서 제시한 대로만 짜면 된다. dice = list(map(int, input().split())) if len(set(dice)) == 1: print(10000 + dice[0] * 1000) elif len(set(dice)) == 2: for i in range(3): cnt = dice.count(dice[i]) if cnt == 2: print(1000 + dice[i] * 100) break else: print(max(dice) * 100) 딱 문제에서 제시한 대로 짰다. 여기서 set 자료형은 동일한 요소를 자동으로 삭제하기 때문에 이런 문제를 풀거나 할때 요긴하게 사용할 수 있다. 백준에 제출해 보자. 맞았다!

흔한 중학수학 문제이다. 좌표평면 위의 점 (x, y)에서 x > 0, y > 0이면 제1사분면, x 0이면 제2사분면, x 0, y 0 and y > 0: print(1) elif x 0: print(2) elif x 0 and y < 0: print(4) 조건문 연습(..?). 백준에 제출해 보았다. 와! 근데 문제 난이도에 걸맞지 않게 solved.ac에서 AC RATING을 3점이나 준다. 1점정도 줄 줄 알았는데.

허허... 백준을 둘러보다가 이런 문제가 있길래 한번 풀어봤다. ab = list(map(int, input().split())) print(ab[0]*ab[1]) 코드 해설은 딱히 필요없을 것 같아서 생략하겠다. 맞았다..!

다솜이라는 사람이 국회의원 선거에 나가기 위해서 유권자들을 매수하는데, 얼마나 매수해야 당선될 수 있을까를 묻는 문제이다. 나는 저번에 학생회장/부회장 선거에 나갔었는데, 떨어졌었다. 나도 이 프로그램이 있어 학생들을 매수했다면 이길 수 있었을까(?). (농담이져 농담 ㅋㅋ) 암튼 그래서 코드를 짜봤다. candidates = [] for i in range(int(input())): candidates.append(int(input())) person = 0 while True: is_True = True for i in range(1, len(candidates)): if candidates[i] >= candidates[0]: is_True = False break if is_True: print(..

이 문제를 보고 나는 정말 쉽다 생각해 신나서 코드를 짰다. abc = list(map(int, input().split())) print((abc[0]**abc[1])%abc[2]) 하지만 그러고 제출해 보니... ...? 시간 초과...? 알아보았더니 이 문제는 Divide and Conquer(DAC), 즉 분할 정복의 원리를 사용해야 풀리는 문제였다. 예를 들어, 2^32라면 2를 32번 곱하는 방법도 있지만, (2^16)^2로 해서 풀면 2를 16번 곱한 것을 다시 2번 곱하니 17번의 연산만으로 끝낼 수 있어 시간이 훨씬 적게 든다. 이를 계속 해보면 {(2^8)^2}^2 이렇게 풀면 10번만에, [{(2^4)^2}^2]^2 이렇게 풀면 7번만에 끝낼 수 있어 시간이 획기적으로 주는 것이다. ..

올해가 이제 2시간도 채 남지 않았다. 나는 올해 무엇을 했을까. 그래도 블로그도 하고, 아주 의미없는 한 해는 아니었던 것 같다. 오미쿠지는 일본 문화의 한 가지이다. 신토 문화의 하나로 신사나 절에서 운세가 써진 제비뽑기를 하여 길흉(吉凶)을 점친다. 굳이 번역한다면 '운세제비'라고 할 수 있다. 한국의 산통과 비슷한 개념이다. 나무위키에서 인용했다. 내가 일본인은 아니지만, 그래도 일본어와 일본 문화를 배우고 있는 입장에서 신년에 오미쿠지 한 번 정도는 해 주는게 좋을 것 같다는 생각이 들었다. 그런데 생각해 보니 문제가 있었다. 한국에는 신사가 없다는 것이다. 절에 가서 "오미쿠지 할 수 있나요?" 라고 물어보기도 좀 그렇고. 그래서 그냥 내가 만들기로 했다. 오미쿠지가 뭐 별건가. 그냥 랜덤으로..
살다 보면, 가끔 리스트에서 특정 요소의 개수를 구하는 것이 필요할 때도 있고 하다. examples = [1, 1, 0, 0, 1, 0, 1] zeros = 0 for example in examples: if example == 0: zeros += 1 이렇게 코드를 작성하면 3이라고 제대로 된 출력결과가 나온다. examples 리스트 안의 모든 요소를 검색해서 특정 요소가 맞는지 아닌지 검사하는 코드이다. 그렇지만 늘 그렇듯 파이썬의 내장함수는 매우 뛰어나다. 당연히 리스트 안의 특정 요소를 세는 함수도 있을 것이다. examples = [1, 1, 0, 0, 1, 0, 1] zeros = examples.count(0) 이렇게 {리스트명.count(특정 요소)}를 사용하면 매우 쉽게 리스트 내 ..

팩토리얼 값을 구한 후, 팩토리얼 값을 계산한 뒤부터 0의 개수를 세서 출력하는 프로그램입니다. 예를 들어 N!이 10100이면 2를, 10000이면 4를 출력하는 식이죠. (문제 대충 읽고 그냥 count 했다가 틀렸습니다...) 팩토리얼에 관한 글은 이미 저번에 썼기 때문에 팩토리얼에 관한 내용은 넘어가고, 바로 코드를 공개하겠습니다. import math factorial = list(str(math.factorial(int(input())))) length = len(factorial) - 1 zeros = 0 while True: if factorial[length] == '0': zeros += 1 length -= 1 else: break print(zeros) math 모듈을 이용해 입력받..

PLU High School Programming Contest 중 의 9번 문제인 이다. 30살이 넘어서도 사탕을 가지고 싸우는 형제들의 이야기... for i in range(int(input())): cv = list(map(int, input().split())) print("You get " + str(cv[0]//cv[1]) + " piece(s) and your dad gets " + str(cv[0]%cv[1]) + " piece(s).") 그냥 몫과 나머지를 구하는 간단한 문제이다. 백준에 제출해 보자. 맞았다! 그건 그렇고 이제 3개월 내 공개 발행글이 20개가 되서 드디어 카카오 애드핏 신청을 할 수 있다...! 애드핏보다 애드센스가 더 좋긴 한데, 애드센스는 신청한지 2주일은 된 것..

이런 문제는 너무 쉬워서 설명이 필요없다. ab = list(map(int, input().split())) if ab[0] > ab[1]: print(">") elif ab[0] < ab[1]: print(""을, a보다 b가 크면 "

윤년이면 1, 아니면 0을 출력하라는 문제이다. import calendar year = int(input()) if calendar.isleap(year): print(1) else: print(0) 문제에 나온 조건에 맞춰서 직접 구현하는 방법도 있지만, 그 방법에는 치명적인 약점이 있다. 바로 귀찮다는 것이다. 그래서 나는 calendar 모듈을 import해주었다. calendar 모듈의 isleap 함수는 연도가 윤년인지 아닌지 판별해주는 함수이다. 백준에 제출해 보자. 맞았습니다!!

Python에는 여러가지 모듈이 있습니다. 진짜 많은 모듈들. 그 중 오늘은 beutifulsoup라고, 웹 크롤링을 하는 모듈을 써보려 합니다. Beautiful Soup is a Python library for pulling data out of HTML and XML files. 그렇다고 하네요.(출처) 그래서 오늘은 이 위키독스 페이지 그리고 이 위키독스 페이지를 보며 한번 beutifulsoup를 공부해보겠습니다. 우선 컴퓨터에 모듈을 깔아줘야 합니다. cmd에 들어가서 pip install beautifulsoup4라고 치면 아마 될겁니다. 그리고 requests라는 모듈도 깔아야합니다. pip install requests 합시다. 잘 깔렸네요. 그러면 이제 beautifulsoup를 써볼..

N과 K를 입력받아 N의 약수들 중 K번째 수를 출력하는 문제네요. nk = list(map(int, input().split())) divisor = [] for i in range(1, nk[0]+1): if nk[0] % i == 0: divisor.append(i) try: print(divisor[nk[1]-1]) except IndexError: print(0) n과 k를 입력받고 n의 약수를 모두 구해 divisor 리스트에 넣고 그 k번째 수를 출력합니다. 만약 divisor 리스트에 k번째 수가 없을 경우에는 0을 출력하고요. 백준에 제출해 봅시다. 맞았습니다. 잠깐 딴소리좀 해보자면, 이제 곧 크리스마스입니다. 모두들 홀로 크리스마스를 보내지 않을까 하고 생각하는데요. 저는 지금 설레는..

오늘 좀 일이 있었는데, 그렇다고 주 3회 블로그를 쓰자는 나와의 약속을 어길 수는 없다고 생각해서... 오늘 글은 날먹을 좀 해야겠다. print(sum(list(map(int, input().split())))) 입력받은 것을 띄어쓰기를 기준으로 리스트로 만든 뒤, 그를 정수형 리스트로 만들어 그 리스트의 합을 출력하는 코드이다. 나는 개인적으로 코딩을 할 때에 리스트를 많이 사용하는 편이다. 언제부터였는지는 모르겠지만, 굳이 리스트를 쓰지 않아도 되는 일에 리스트를 쓰고, 내장함수도 리스트 관련된건 많이 쓰다 보니 저절로 외워지고, 리스트를 이용해 생각하는게 편하다. 근데 또 반대로 문자열을 다루는 데에는 익숙치 않다. 그래서 비효율적이긴 하지만, 문자열도 리스트로 바꾸어 코딩을 할 때도 자주 있다..

그냥 입력받은 요소를 잘~ 세기만 할 줄 알면 풀리는 문제이다. n = int(input()) opinion = [] for i in range(n): opinion.append(int(input())) if max(set(opinion), key=opinion.count) == 0: print("Junhee is not cute!") elif max(set(opinion), key=opinion.count) == 1: print("Junhee is cute!") 입력받은걸 세서 많은게 0이면 안귀엽다, 1이면 귀엽다고 출력한다. 리스트에서 가장 많은 요소를 세는 방법에 관해서는 다음 글을 참고했다. 백준에 제출해 보자. !

(웃음) (笑) print("파이팅!!") 백준에 제출해보자. 38초만에 글 하나를 날먹하는 블로거가 있다?!

2021 POSTECH Programming Contest의 A번 문제인 이다. N을 입력받은 후, 다시 N으로 돌아올 때까지 N을 회전시켜 나오는 값들을 더하는 문제이다. n = list(input()) total = 0 for i in range(len(n)): n.insert(0, n[-1]) del n[-1] total += int("".join(n)) print(total) N을 입력받은 후, N의 맨 뒷글자를 맨 앞으로 옮긴 뒤 맨 뒷글자를 삭제하고, N의 값을 total 변수에 더하는 과정을 N의 길이만큼 반복한다. やった!

SMUPC의 등장! 제1회 숙명여자대학교 교내 알고리즘 경진대회(SMUPC)의 A번 문제네요. 생각보다 되게 쉬웠던 것 같아요. 코드 공개하겠습니다 :) alphabets = list(input()) for i in range(len(alphabets)): times = sum(list(map(int, list(str(ord(alphabets[i])))))) print(alphabets[i] * times) 우선 출력할 알파벳들을 입력받습니다. 조금 이해하기 어려울 수 있는 줄이 3번 줄인데, 3번 줄은 알파벳에 해당하는 아스키코드 값을 구해서 그 자릿수들을 더하는 줄입니다. ord()함수를 이용해서 alphabets 리스트의 i번째 요소의 아스키 코드 값을 구한 뒤에, 그를 자릿수별로 나누기 위해서 문..

두 개의 자연수를 입력받아 최대공약수와 최소공배수를 출력하는 프로그램을 작성하라는 문제다. 너무 간단한 문제다. 직접 최대공약수와 최소공배수를 구할 수도 있지만, 저는 math 모듈을 좋아하기에 모듈을 사용해서 해결했습니다. import math numbers = list(map(int, input().split())) print(str(math.gcd(numbers[0], numbers[1])) + "\n" + str(math.lcm(numbers[0], numbers[1]))) math 모듈을 import한 뒤, numbers 변수로 최대공약수와 최소공배수를 구할 수들을 리스트 형태로 입력받고, 최대공약수와 최소공배수를 구하여 출력합니다. 여기서 math.gcd() 함수는 최대공약수를, math.lc..