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

제1회 한국항공대학교 프로그래밍 경진대회(KAUPC)에 나온 1번 문제, 스트릿 코딩 파이터이다. 동아리원들이 한손 코딩, 노룩 코딩, 폰코딩이라는 무시무시한 기술들을 선보이며 진행되는 대회의 1등의 점수를 구하는 문제이다. 무시무시한 문제와는 다르게 정답 코드는 굉장히 간단하다. level = list(map(int, input().split())) n = int(input()) grades = [] for i in range(n): grade = 0 for j in range(3): a = list(map(int, input().split())) for k in range(3): grade += a[k] * level[k] grades.append(grade) print(max(grades)) 우선 ..

백준의 2747번 문제 풀이이다. 피보나치 수인데, 이런 문제로 굉장히 많이 나와가지고 그냥 한번 풀어 봐야겠다. 피보나치 수는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 예를 들어 [1, 1] 다음에는 1+1이니 2가 들어가서 [1, 1, 2], 다음에는 1+2니까 [1, 1, 2, 3, ...] 이런식으로 계속 가는 수열을 말한다. 따라서 이 원리대로 코드를 작성하여 보자. n = int(input()) fibonacci_numbers = [1, 1] i = 2 while True: fibonacci_numbers.append(fibonacci_numbers[i-1] + fibonacci_numbers[i-2]) i += 1 if len(fibonacci_numb..

욧! 오늘부터 유니티를 시작할 거고, 그를 이 블로그에 올릴 겁니다. 사실 유니티 같은 경우는 여러 번 시도했는데, 맨날 어려워서 포기했다는.. 이제부터는 잘할 거예요..! 그럼 오늘은 설치를 할 겁니다. 우선 이 유니티 사이트에 들어갑시다. (사진을 클릭하면 이동됩니다.) 오 뭔가 디자인이 굉장히 모던한 사이트네요. 그럼 여기서 시작하기 버튼을 누릅시다. 여기서 오른쪽 상단의 버튼을 누릅시다. 알아서 잘 선택하시면 되는데 제 생각에 이 글을 보시는 분들의 99%는 Personal 버전으로 설치하실 것 같네요. Personal 버전이 무료이고, 월 자본금이 10만 달러 이상이 되시는 분은 이 글을 보실 리가 없으니까... (혹시 있나요? 있다면 댓글을 남겨 주세요!) 근데 사실 Personal 버전은 다..

뭔가 포트폴리오를 만들 때나, 기타 등등 모던한 웹을 만들기 위해서는 애니메이션이 꼭 필요하고, 그 중 타이핑 효과는 꽤 흔한 효과입니다. 이번에 제가 그 효과를 CSS 없이 순수 자바스크립트로만 만들어 보았습니다. (고생을 사서 하는 타입) 무슨 말을 넣을까 생각하다가, 곧 친구의 생일이기 때문에 "생일 축하해!"라는 메시지를 타이핑 효과로 표현해 보았습니다. 그 메시지 뒤에 깜빡거리는 커서도 넣었고요. 아무튼 코드를 공개하겠습니다 :) index.html | typing.js const typeSpace = document.getElementById('typing'); const cursur = document.getElementById('blink'); const typeList = ["ㅅ", "새..

팩토리얼! 간단한 수학계산 문제네요. 다들 아시겠지만 팩토리얼(!)은 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 = {'あ':'ア', 'い':'イ', 'う':'ウ', 'え':'エ', 'お':'オ', 'か':'カ', 'き':'キ', 'く':'ク', 'け':'ケ', 'こ':'コ', 'さ':'サ', 'し':'シ', 'す':'ス', 'せ':'セ', 'そ':'ソ', 'た':'タ', 'ち':'チ', 'つ':'ツ', 'て':'テ', 'と':'ト', 'な':'ナ', 'に':'ニ', 'ぬ':'ヌ', 'ね':'ネ', 'の':'ノ', ..

from microbit import * uart.init(115200) while True: if button_a.is_pressed() and button_b.is_pressed(): uart.write("ㅤ") sleep(300) elif button_a.is_pressed(): uart.write("·") sleep(300) elif button_b.is_pressed(): uart.write("-") sleep(300) if uart.any() == True: readdata = uart.read() display.scroll(readdata) Python으로 Microbit를 이용해 모스부호 송수신기를 만들어봤다. Microbit에서 A버튼을 누르면 점(·), B버튼을 누르면 선(-)이 보내지..

MySQL에서 테이블 내용을 보려면 우선 스키마(데이터베이스)에 들어간 뒤 이 명령어를 입력해 주면 된다. SELECT * FROM [table name]; 테이블 이름이 tab이면 이런 식으로 들어가 주면 되는 것이다. 그런데 SELECT와 FROM 사이에 *을 입력해주게 되면 테이블 전체가 출력된다. 만약 특정 행만 출력하고 싶다면 SELECT와 FROM 사이에 행의 이름을 입력해 주면 되는 것이다. 그러면 만약 표에서 특정 값을 포함한 열만 추가하려면 어떻게 해야 할까. 예를 들어, 저자가 kwon_yonghyeon인 행만 출력하고 싶다. 그러면 뒤에 WHERE을 추가하면 된다. 이번에는 만약 1 2 3 4 5... 순서가 아닌 5 4 3 2 1... 순으로, 역순으로 출력하고 싶다면 뒤에 이걸 추..
MySQL에서 스키마 안에는 테이블이라는 표가 있습니다. 테이블에는 row라는 열이 있죠. 테이블에 row를 추가하려면 어떻게 하면 될까요? INSERT INTO [table name](column) VALUES(row); 이렇게 해주시면 간단히 테이블에 열을 추가해주실 수 있습니다.

HTML으로 웹페이지를 만들 때, 글자를 정렬함은 매우 중요합니다. 정렬으로는 가운데 정렬, 왼쪽 정렬, 오른쪽 정렬 등이 있죠. 가운데 정렬 HTML에서 글자를 가운데 정렬하는 법은 두 가지가 있습니다. 첫번째로는 태그를 이용하는 것이고, 두번째로는 CSS를 활용하는 것이죠. 태그를 이용하는 방법부터 살펴보자면, TEXT 이렇게 이용해 주시면 됩니다. CSS를 활용하는 방법으로는, text-align을 사용하는 것인데, TEXT 이렇게 사용하는 것입니다. 태그는 텍스트 하나만 가운데 정렬할 때에 편리한 반면, CSS를 활용하는 방법은 태그 뿐만 아니라 ~ 과 같은 모든 텍스트 태그와, 태그 전체, 에도 적용 가능하여, 웹사이트를 전반적으로 디자인 할때 편리합니다. 2. 왼쪽 정렬 왼쪽 정렬을 할 때에는..