백준 11687번: 팩토리얼 0의 개수 알고리즘 분류: 수학, 정수론, 이분 탐색 파이썬(Python) 풀이 링크: https://www.acmicpc.net/problem/11687 문제 가장 끝의 0의 개수가 M개인 N! 중에서 가장 작은 N을 찾는 프로그램을 작성하시오. 입력 첫째 줄에 M (1 ≤ M ≤ 100,000,000)이 주어진다. 출력 가장 끝의 0의 개수가 M개인 N! 중에서 가장 작은 N을 출력한다. 그러한 N이 없는 경우에는 -1을 출력한다. 풀이 예를 들어 1이 입력되면 0의 개수가 1개인 N은 5이다( 5! = 120이기 때문) 그러면 2가 입력된다면 0의 개수가 2개이므로 N은 10이 된다 ( 10! = 3628800이기 때문) 여기까지만 본다면 M과 N의 관계는 M * 5 =..
분류 전체보기
이번에는 switch에 대해서 다뤄볼 것이다. switch를 언제쓰면 좋냐? 그건 구분해야할 게 많은 경우에 사용하면 좋다. 예를 들어, 입장하는 손님의 나이가 10대인지, 20대인지, 30대인지 .... 90대인지 확인하기 위해서는 다음과 같이 조건문을 작성해야 할 것이다. var age: Int = 19 if age < 20 { print("10대 입니다.") } else if age < 30 { print("20대 입니다.") } else if age < 40 { print("30대 입니다.") } else if age < 50 { print("40대 입니다.") ... } else if age < 90 { print("80대 입니다.") } else if age < 100 { print("90대 ..
조건문은 프로그래밍에서 꽃이라고 생각한다.(물론 반복문도) 이번에는 조건문에 대해서 다루어 볼 것이다. 일반적으로는 비슷하게 사용하지만 switch 사용법은 다르니까 이 부분은 좀 더 집중할 필요가 있다. 그래서 switch는 따로 다뤄볼 생각이다. ⚠️ 조건문이 뭔가요?를 묻고 싶은 사람만 읽으세요 ⚠️ 조건문을 쉽게 설명하자면 800원짜리 음료수를 자판기에서 뽑으려고 할 때, 넣은 동전의 금액을 음료수값과 비교한다고 생각하면 된다. 800원보다 크거나 같으면 음료수를 주고, 작으면 안주는 그런 느낌 (나름대로 쉽게 설명하려고 노력했습니다) 따라서 조건문은 맞음(True)와 틀림(False)이라는 두 가지 상태만을 다룬다. 맞았을 때 실행할 행동과 틀렸을 때 실행할 행동도 설정할 수 있다. if, el..
초등학교 때 숫자를 배우고나서 뭘했는지 생각해보면 숫자들끼리 더하고 빼면서 연산을 했었다. 마찬가지로 이번에는 Swift에서 연산을 배워볼 것이다. 연산자 기호 예시 더하기 + 4 + 2 // = 6 빼기 - 4 - 2 // = 2 곱하기 * 4 * 2 // = 8 나누기 / 4 / 2 // = 2 나머지 % 5 % 2 // = 1 다른 프로그래밍 언어를 배웠었다면 동일하다는 것을 눈치챘을 것이고 배우지 않았더라면 나머지 연산자가 생소할 것이다. 짧게 설명하자면 나누기 연산자는 몫을 구하고, 나머지 연산자는 나머지를 구하는 것이라고 생각하면 된다. 이번에는 연산자를 줄여서 써볼 것이다. score라는 변수에 5를 더해주려면 score = score + 5라고 써야하지만, 변수명이 길어진다면 귀찮아진다는 ..
Swift에서는 네 가지의 변수 타입이 있다. 제목에 쓰여있듯이 Int, Double, String, Bool이다. C언어와 많이 비슷한 느낌이다. Int(integer numbers) Int는 정수의 값을 갖는 변수이다. 여기서 정수는 양의 정수(+1, +2, +3...), 0, 음의 정수(-1, -2, -3...)등의 값이다. Double(floating-point numbers) Double은 실수의 값을 갖는 변수이다. 영어 뜻처럼 소수점의 값을 가질 수 있다고 생각하면 편하다. String(a sequence of charcters) String은 문자열이다. 말 그대로 문자들이 길게 이어져있는 것이다. String의 뜻은 실, 끈인데 문자가 길게 이어진 모습이 마치 실이나 끈과 같아서이지 않을..
대부분의 프로그래밍 언어를 배울 때, 시작은 항상 출력을 배웠던 기억이 있다. 따라서 이번에는 전 세계 국룰 "Hello World"를 출력해볼 것이다. 출력 함수: print() Swift에서 출력 함수는 Python과 비슷한 print() 형태이다. 그러면 Hello World를 출력해보자. print("Hello World") 여기서 주의해야 할 부분은 Swift에서 문자열은 항상 큰따옴표(")로 감싸야한다는 점이다. 만약 print('Hello World')라고 입력하면 에러가 발생할 것이다. 변수 출력 다음으로는, 변수를 출력하는 방법이다. 이번 장에서는 변수를 다루지 않으므로 간단하게만 설명하고 넘어갈 것이다. 아래는 2024이라는 정수를 가진 year라는 변수를 선언한 뒤 출력하는 것이다. ..
✏️ 작성자 기준으로 어떻게 공부할지 작성된 글입니다. 왜 Swift인가? 20대 이후로 내 진로를 정한 것은 iOS 개발자였다. UI/UX와 웹개발을 위주로 하면서 내 스스로의 강점을 깨달았기 때문이다. 서비스를 개발하면서 많은 시간을 예외 처리에 사용하고, 디자인도 내가 안쓸 디자인이거나 보여주기 창피하면 계속해서 변경했다. 이러한 나의 특징들은 유저에게 좋은 경험을 제공할 수 있다는 강점이 되었고 이러한 특징을 갖고 있는 브랜드를 떠올렸을 때 Apple이 생각났기 때문이다. 따라서, iOS 개발자가 되기 위해 Swift 공부를 해보고자 한다. Swift가 그렇게 문법이 난해하다는 말을 들어보았다. 방학을 맞이하여 새로운 자극을 뇌에 전달하기 위해 Swift 문법을 찍먹 해보기로 결정하였다. 먼저, ..
: 사건의 발단 requests 라이브러리를 통해 특정 웹사이트의 데이터를 크롤링하거나 API를 호출하였는데 이 반환되었음. : 해결 방법 이 오류는 서버가 클라이언트의 요청은 이해했지만 주로 권한 때문에 처리를 거부한다는걸 의미함. 따라서 User-Agent를 설정하여 해결할 수 있음 대부분 웹사이트는 웹 브라우저의 요청을 받고자 하여 User-Agent를 웹 브라우저처럼 설정해두면 됨. # Before response = requests.get(url) # After headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Saf..
getchar()을 쓰자...ㅠ 보통 C언어에서는 입력 버퍼를 비우기 위해 fflush를 사용하는 경우가 있다. 예를 들어 배열의 크기를 입력받고, 그 안에 요소들을 한개씩 입력받는 경우에 개행문자('\n')가 그대로 들어가는 문제가 발생한다. 이를 방지하기 위해 백준에서 위 1991번 문제를 풀 때 fflush를 사용하였다. 예전부터 입력 버퍼 비우려면 fflush(stdin);이 정답이라고만 생각해서 생각없이 썼는데 이번 기회에 왜 쓰면 안되는지를 생각해보았다. fflush는 출력 스트림에 대해서는 정의가 되어있지만 입력 스트림에 대해서는 정의가 되어있지 않다고 나와있다. 또한 공식 문서를 확인해보니 2015년 부터에서는 아무런 효과가 나타나지 않는다고 적혀있어서 https://en.cpprefere..
공지사항을 보여주는 데, 상위 5개의 공지사항을 보여주고자 한다. 근데 어떤식으로 선정하면 좋을까? 라는 고민을 하게 되었다. 추천/비추천 기능이 있다면 조금 더 직관적으로 개발할 수 있었겠지만 이건 조회수, 공지 등록일, 공지 업데이트일, 북마크수가 전부이기 때문이다. 이걸 기준으로 순위를 매겨야하는데 다음과 같은 고민을 거쳤다. 1. 공지 업데이트일을 신경써야하나? 왜냐하면, 매일마다 공지를 업데이트하여 상위에 노출하는 분이 계셨기 때문이다. 그러면 해당 공지는 당연히 조회수가 많아질 수 밖에 없고 항상 Top 5안에 들지 않을까 라는 생각이 들었다. (또한, 이게 악용된다면 모든 공지사항은 매일마다 Top 5에 들기위해 업데이트 될 수도 있다는 생각이 들었다.) 그래서 공지 등록일과 업데이트일 사이..