목록분류 전체보기 (317)
지나가던 개발자

팩토리얼! 간단한 수학계산 문제네요. 다들 아시겠지만 팩토리얼(!)은 1부터 N까지의 곱을 말하는 겁니다. 그러니까 예를 들어서 10!은 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 = 3628800이 되는 것이죠. 그래서 파이썬으로 코드를 짜보았습니다. n = int(input()) a = 1 for i in range(1, n+1): a = a * i print(a) 생각보다 간단하네요. 뭔가 처음에 제 생각에는 10줄은 되겠다 생각했는데 짜고 보니까 이정도밖에 안됐습니다. 팩토리얼할 수 n을 입력받은 후, n번동안 쭉 곱해주는 알고리즘이죠. 간단합니다. 그리고 제출해봤더니, 맞았네요. 근데 사실 그냥 이런 문제라서 알고리즘 짤라고 저렇게 한거지 사실 파이썬에는 팩토리얼을 계..

맨날 프로그래머스만 풀다가 오랜만에 백준에 돌아와서 푼 문제입니다! 굉장히 간단한 문제네요, 첫째 줄에 정수의 개수, 둘째 줄에 정수들을 입력받은 뒤, 뒤에 입력받은 정수들 중에서 가장 큰 값과 가장 작은 값을 구하는 문제입니다.(이럴거면 첫째 줄에 정수의 개수를 왜준걸까요) 그러면 뒷줄 정수들을 가지고 리스트를 만든 뒤에, 거기서 가장 큰 값과 가장 작은 값을 구하면 되겠습니다. 코드를 짜보면... a = input() b = list(map(int, input().split(' '))) print(min(b), max(b)) 뭐 간단한 코드죠? 윗줄에 입력받고, 아랫줄에 입력받은[input()] 것을 공백을 기준으로 잘라 리스트로 만든 뒤[.split(' ')], 이를 int를 사용한 map객체로 변..

중학교 1학년만 다니셨으면 모두 아시겠지만, 소인수분해란, 어떠한 수를 소수인 인수로 분해한 곱으로 나타내는 겁니다. 소수(素數)는 약수를 자기 자신과 1만 갖는 수를 말하고, 인수(因數)는 정수 또는 정식을 몇 개의 곱의 꼴로 하였을 때에, 그것의 각 구성요소를 이르는 말... 인데! 그냥 약수라고 생각해 주시면 됩니다. 그러니까 어떤 수를 소인수분해한다 함은 그 수의 약수 중 소수를 골라 그의 곱으로 나타내는 것이죠. 위 그림이 소인수분해의 원리인데, 가장 작은 소수로 계속 나누어서 마지막 소수가 나올 때까지 나누고, 나눈 소수를 곱으로 연결해주는 것이죠. 위 그림의 64는 2 * 2 * 2 * 2 * 2 * 2 이니 2^6으로 나타낼 수 있겠죠. 다른 예를 들어 볼까요? 18을 소인수분해한다고 하면..

Python을 할 때에, 2차원 리스트를 1차원 리스트로 바꿔야 할 때가 있다. 결론적으로, 가장 심플한 방법은 이건 것 같다. sum(리스트명, [])

코딩을 하다보면... 특히 프로그래머스나 등등에서 문제를 풀다보면,,, "진수"를 변환해야 할 일이 매우 자주 생깁니다. 파이썬에서 2, 8, 16진수는 bin(), oct(), hex()라는 매우 좋은 내장함수를 사용하여 쉽게 바꿀 수 있습니다만, 3진수라던가, 11진수라던가, 1000진수가 나온다던가(설마 그럴 일은 없겠죠) 하면 직접 만들어야 합니다. 직접 만들기 위해서 진수 변환의 원리를 알아보자면, 위 그림에서 보는게 정말 그냥 진수 변환의 원리입니다. 변환할 수를 변환할 진법으로 계속 나눈 뒤 나오는 나머지! 그게 바로 진수 변환이에요. 그래서 그렇게 코드를 짜보면... def jinsu(n, m): hihi = [] while True: if n // m == 0: hihi.append(n)..

2번째 mBlock이자 블록코딩 게시글이다!! (와ㅏㅏ!!) mBlock이라는데에 쉽게 AI를 만들 수 있게 학습할 수 있는 모듈이 있길래 임포트한 뒤에 해봤다. 바로 "기계학습" 이라는 모듈인데 다들 스프라이트에 임포트 후 따라해보시길. 그리고 그 기계학습을 임포트하면 "TM"이라는 블록 모음이 생기는데, 거기서 "학습 모델"을 클릭 후에 학습시켜주면 된다. 나는 좋아요 싫어요를 구별하는 프로그램을 만들어보고 싶었기에 이렇게 학습시켰다. (키보드가 일본어로 설정되어 있길래 그냥 일본어로 해버렸다) 암튼 이렇게 학습을 시켜주면 이 똑똑한 mBlock이라는 친구가 그걸 학습해서 분류해서 인식해준다!! (또 일본어...) 이렇게 코드를 짜주면 된다. 저 말하는 블록은 "Text to Speech"모듈을 임포..

블로그에 블록코딩 첫 공유...랄까 블록코딩을 굉장히 오랜만에 해봤다. OrangeBoard라는걸 사가지고 함 실습해보려고 mBlock을 이용해 빨간색, 초록색, 파란색 불을 키는 프로그램을 만들어보려 한다. 이 LED 비슷한걸 OrangeBoard에 껴야 하는데 나 같은 경우에는 9번에 R, 10번에 G, 11번에 B를 꼈음을 알린다. 위가 OrangeBoard의 코드이다. 그리고 이건 스프라이트의 코드이다. 위쪽 화살표 키를 누르면 G, 아래쪽 화살표 키를 누르면 B, 스페이스 키를 누르면 R 불이 켜지게 만들었는데, 키보드는 스프라이트만 인식할 수 있기 때문에 스프라이트에서 입력받은걸 OrangeBoard로 전하는 식으로 만들었다. 그래서 OrangeBoard에 업로드를 해보면, 이렇게 된다. 코드..

때는 바야흐로 내가 글을 익히고 있던 때, 히라가나를 가타카나로 바꾸는 프로그램이 있었으면 좋겠다는 생각을 한 적이 있다. 지금은 아무렇지 않게 잘 쓰지만, 그때는 가타카나가 익숙치 않았던 기억이 있다. 그래서 한번 만들어 봤다. def hg(a): a = list(a) hiragana2katakana = {'あ':'ア', 'い':'イ', 'う':'ウ', 'え':'エ', 'お':'オ', 'か':'カ', 'き':'キ', 'く':'ク', 'け':'ケ', 'こ':'コ', 'さ':'サ', 'し':'シ', 'す':'ス', 'せ':'セ', 'そ':'ソ', 'た':'タ', 'ち':'チ', 'つ':'ツ', 'て':'テ', 'と':'ト', 'な':'ナ', 'に':'ニ', 'ぬ':'ヌ', 'ね':'ネ', 'の':'ノ', ..