마음만은 새내기

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

프로그래밍/Baekjoon Online Judge 60

BOJ 11921번(0.1) 문제 풀이

[문제 링크] 11921번: 0.1 첫째 줄에 수의 개수 N = 5,000,000 이 주어진다. 둘째 줄부터 N개의 줄에는 자연수가 한 줄에 하나씩 주어진다. 입력으로 주어지는 자연수는 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net [문제 분석] 더 빠른 입력 함수를 고민해보는 문제 [풀이] 여기에서 scanf를 사용한다면, 시간 초과를 받을 수 있습니다. 또한, 시간 초과가 아니더라도, 100점 만점을 못받겠죠... 그래서!! 더 빠른 방식을 알려드리고자 합니다. (필자도 종종 사용하는 방법!!) 바로!! BOJ Blog에도 나와있듯이, fread를 사용하는 방법입니다. [fread 함수 원형 및 사용법] fread(void *buffer, size_t elementSiz..

BOJ 1918번(후위표기식) 문제 풀이

★ solved.ac 난이도 : G3 (2021년 12월 29일 기준) [문제 링크] 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net [문제 분석] 스택을 활용한 수식 변환 문제 [풀이] 이 문제는, (사람이 주로 사용하는) 중위 수식을 후위 수식으로 바꾸는 문제입니다. 이 문제도 자료구조를 예습하면서 접하게 된 문제인데요, 여기에서도 LIFO(후입선출)의 스택을 사용했습니다. 후위 수식은, 컴파일러가 주로 사용하는 수식 형태로, 연산자가 피연산자의 뒤에 나오는 수식입니다. 또한, 괄호 없이 우선순위를 반..

BOJ 9012번(괄호) 문제 풀이

★ solved.ac 난이도 : S4 (2021년 12월 29일 기준) [문제 링크] 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net [문제 분석] 스택을 활용한 괄호 검사 문제 [풀이] 이 문제는, 괄호의 모양이 올바른지를 검사하는 문제입니다. 자료구조를 예습하면서 접하게 된 문제인데요, 여기에서 LIFO(후입 선출)의 스택을 사용했습니다. 그 이유는, 가장 가까운 거리에 있는 괄호끼리 서로 쌍을 이루어야 하기 때문입니다. 괄호 검사의 조건을 알려드리자면, 조건 1. 여는 괄호..

BOJ 1405번(미친 로봇) 문제 풀이

★ solved.ac 난이도 : G5 (2021년 12월 29일 기준) [문제 링크] 1405번: 미친 로봇 첫째 줄에 N, 동쪽으로 이동할 확률, 서쪽으로 이동할 확률, 남쪽으로 이동할 확률, 북쪽으로 이동할 확률이 주어진다. N은 14보다 작거나 같은 자연수이고, 모든 확률은 100보다 작거나 같은 자 www.acmicpc.net [문제 분석] DFS와 가지 치기를 활용한 문제 (탑코더 빨간 책에도 있는 문제!!) [풀이] 이 문제는, 탑코더 빨간 책에도 나와있는 문제입니다. (심지어 입력 값의 범위도 같다는 점...) 여기에서는, DFS 탐색 도중 이미 움직인 지점으로 가는 경우에 가지 치기를 사용했습니다. (가지 치기는, 불필요한 탐색을 줄이는 방법입니다.) DFS는 재귀 함수로 구현하였고, 탐색..

BOJ 1004번(어린 왕자) 문제 풀이

★ solved.ac 난이도 : S3 (2021년 12월 29일 기준) [문제 링크] 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net [문제 분석] 원의 성질을 이용한 최적 경로(?) 문제 [풀이] 두 점과 여러 개의 원의 정보가 주어질 때, 교차하는 원의 개수가 가장 적게 되도록 두 점을 잇는 문제라고 생각하시면 됩니다. (문제에서는 원이 맞닿거나 서로 교차하는 경우는 없고, 시작 및 끝점이 원에 맞닿는 경우는 없습니다.) 먼저, 두 점을 입력 받고, 원의 정보(x 좌표, y 좌표, 반지름)를..