마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍 92

BOJ 2166번(다각형의 면적) 문제 풀이

★ solved.ac 난이도 : G5 (작성 시점 기준) [문제 본문 링크] 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 이 문제를 풀기 위해서는 신발끈 공식을 이해하셔야 합니다. 다각형의 각 모서리마다 임의의 선분과 원점을 꼭짓점으로 하는 삼각형의 넓이를 계산하는 방법을 응용한 공식이라고 합니다. (참고 : Wikipedia) [소스 코드 (C++98)] 공유 소스 보기 www.acmicpc.net ★ 틀린 점이 있다면 알려주세요~!

BOJ 12852번(1로 만들기 2) 문제 풀이

★ solved.ac 난이도 : S1 (작성 시점 기준) [문제 본문 링크] 12852번: 1로 만들기 2 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. www.acmicpc.net 이 문제는 일반적인 동적 계획법(DP) 문제이며, BOJ #1463 (1로 만들기) 문제에서 역추적을 추가한 문제입니다. 먼저 크기가 100만 이상인 충분한 정수 배열 2개를 만듭니다. (배열의 이름은 dp로 설정하며, 정답 계산용[0]과 역추적용[1]으로 구분합니다.) 입력이 1이면 연산이 필요하지 않으므로 정답은 0입니다. (dp[1][0] = dp[1][1] = 0) 2 이상의 입력에 대해서는 문제의 조건에 따라 3가지로 생각할 수 있습니다. 경우 1. x가 3으로 나누어 떨어지면서 dp..

BOJ 2407번(조합) 문제 풀이

★ solved.ac 난이도 : S3 (작성 시점 기준) [문제 본문 링크] 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 이 문제는 일반적인 조합의 수를 구하는 문제이나, 큰 수 연산이 필요하므로 Python을 사용하였습니다. nCm = n!/(n-m)!/m! = n*(n-1)*(n-2)*...*(n-m+1)/m! (n부터 내림차순으로 m개를 곱한 값에서 m!을 나눠주면 됩니다. 공유 코드에는 하나의 반복문으로 처리하였습니다.) [BOJ에서 코드 보기] 공유 소스 보기 www.acmicpc.net ★ 틀린 점이 있다면 알려주세요~!

BOJ 1463번(1로 만들기) 문제 풀이

★ solved.ac 난이도 : S3 (작성 시점 기준) [문제 본문 링크] 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 이 문제는 일반적인 동적 계획법(DP) 문제입니다. 먼저 크기가 100만 이상인 충분한 정수 배열을 만듭니다. (배열의 이름은 dp로 설정하며, 이 배열에 정답을 계산해 저장합니다.) 입력이 1이면 연산이 필요하지 않으므로 정답은 0입니다. (dp[1] = 0) 2 이상의 입력에 대해서는 문제의 조건에 따라 3가지로 생각할 수 있습니다. 경우 1. x가 3으로 나누어 떨어지는 경우 3으로 나누기 : min(dp[x], dp[x/3]+1)을 계산합니다. (여기에서 +1은 1번의 추가 연산을 의미합니다...

졸업 작품 준비를 위한 SMS 데이터 수집기를 공유합니다~!

제가 이번에 졸업 작품을 만들기 위해서 자료 조사를 하고 있는데요, 원하는 데이터가 거의 나오지 않았어요... (주제는 스팸 및 사기 문자 예방 앱입니다...) 빅데이터와 머신러닝을 활용할 계획인데요, 이를 위해서는 충분한 학습 데이터가 필요하다는 것을 알게 되었고, 조사를 하던 중 영어로 되어있는 데이터를 찾게 되었습니다. 하지만, 한국어로 되어있는 데이터는 지금으로써는 구할 방법이 떠오르지 않았죠... 그래서 고민을 하던 도중, 제가 직접 사용자로부터 데이터를 모아야겠다고 생각을 하였고, 이를 Android 앱으로 제작했습니다. (아이폰 사용자들은 저도 방법이 없네요... ㅠ.ㅠ) ※ 첨부 파일 ※ 설치 방법 첨부된 파일을 내려받고, install.bat 파일을 실행하시면 됩니다. 단, 설정 > 개발..