분류 전체보기 33

2417번 정수 제곱근

백준 온라인 저지 2417번 정수 제곱근 문제 출처 : https://www.acmicpc.net/problem/2417 2417번: 정수 제곱근 문제 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 n이 주어진다. (0 ≤ n < 263) 출력 첫째 줄에 q2 ≥ n인 가장 작은 음이 아닌 정수 q를 출력한다. 예제 입력 1 복사 122333444455555 예제 출력 1 복사 11060446... www.acmicpc.net 풀이 과정 단순하게 0부터 n의 제곱근까지 계산하는 완전탐색을 사용하면 n의 값이 너무 크기 때문에 시간초과가 나게 됩니다. 따라서 연속되는 값들 사이에서 값을 찾을 때 사용되는 이진탐색을 통해 값을 찾았습니다. 이진탐색으로 값을 찾고..

1991번 트리순회

백준 온라인 저지 1991번 트리순회문제 출처 : https://www.acmicpc.net/problem/1991풀이 과정해당 문제는 각각의 노드가 왼쪽과 오른쪽의 자식 노드를 가질 수 있는 구조인 이진 트리입니다. 따라서 구조체를 사용하여 노드를 만들었고, 여러개의 노드를 사용하므로 구조체 배열을 선언했습니다. 입력을 정수가아닌 문자로 받기 때문에 이를 구조체 배열의 인덱스와 매칭시키기 위해서는 정수로의 변환이 필요하기 때문에 아스키코드를 연산하여 배열에 저장할 수 있도록 했습니다. 순회는 일반적으로 사용하는 재귀함수를 사용하여 구현했습니다. 루트가 탐색되는 순서에 따라 전위 순회, 중위 순회, 후위 순회로 나뉘어집니다. 루트 -> 왼쪽 -> 오른쪽 왼쪽 -> 루트 -> 오른쪽 왼쪽 -> 오른쪽 ->..

1712번 손익분기점

백준 온라인 저지 1712번 손익분기점문제 출처: https://www.acmicpc.net/problem/1712 풀이 과정 입력 받는 값이 21억 이하의 자연수이기 때문에 단순 반복문으로 푸시면 시간초과가 뜰 수 있습니다. 판매비용이 가변비용 보다 작다면 만들어서 팔 때마다 적자를 보는것이므로 이익이 절대 발생할 수 없습니다. 따라서 판매비용에서 가변비용을 뺀 값이 0보다 작거나 같다면 이익을 볼 수 없으므로 종료합니다. 만약 뺀 값이 0보다 크다면 고정비용을 뺀 값으로 나눠 주면 됩니다. 소스 코드 #include using namespace std; int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); int diff = c - b; if (diff

13458번 시험 감독

백준 온라인 저지 13458번 시험 감독문제 출처 : https://www.acmicpc.net/problem/13458 풀이 과정 우선 총감독관은 각각의 시험장에 1명만 존재할 수 있고, 부감독관은 여러명 존재할 수 있습니다. 그러므로 맨 처음에 각 시험장에 있는 응시자의 수에서 총감독관이 감시할 수 있는 응시자의 수를 빼줘야 합니다.총감독관이 감시할 수 있는 응시자의 수가 시험장에 있는 응시자의 수보다 크거나 같다면 부감독관은 필요하지 않을테니 종료해야 합니다.이런경우 필요한 감독관의 최소 수는 1명이 됩니다. 그러나 총감독관이 감시할 수 없는 응시자가 존재한다면 부감독관을 채워 넣어야 합니다. 응시생들을 모두 감시해야 하기 때문이죠. 부감독관의 수를 구하는 방법은 남은 응시자 수를 부감독관의 수로 ..

2420번 사파리월드

백준 온라인 저지 2420번 사파리월드문제출처 : https://www.acmicpc.net/problem/2420 풀이 과정간단하게 두 개의 수를 입력받아서 차를 구하고 절대값으로 출력하면 됩니다. 주의할 점값을 입력 받을 때 -20억 ~ 20억 사이이기 때문에 두 차의 절대값이 40억이 될 수 있는 가능성을 생각해서 long long으로 선언하고 문제를 제출했으나 틀렸습니다가 떴습니다. 원인을 찾아봤는데 처음에 abs함수를 사용했는데 abs함수는 long long 타입을 매개변수로 받지 않기 때문에 long long을 반환해주는 llabs를 사용해서 문제를 해결했습니다. 소스코드 #include #include int main() { long long a, b; scanf("%lld %lld", &a..

API

APIAPI란?API란 Application Programming Interface의 약어입니다. 인터페이스란 간단하게 프로그램과 프로그램, 또는 장치와 프로그램, 운영체제와 프로그램 등 서로 통신이 필요한 것들을 중간에서 이어주는 역할을 해줍니다. 해석해보자면 어플리케이션(응용 프로그램)을 프로그래밍하는데 필요한 인터페이스(매개체)를 뜻합니다. API를 사용하면 현재 개발 중인 프로그램에서 구현해야 할 어떤 기능이 있을 때 해당하는 기능을 직접 구현할 필요 없이 가져와 사용할 수 있고, 또는 API를 통해 다른 프로그램들(예를 들면 DBMS, 운영체제) 하고 상호작용을 할 수 있습니다. API와 라이브러리의 차이API와 라이브러리를 굉장히 비슷하다고 느끼실 수 있는데요. 저도 굉장히 많이 찾아봤는데 개..

기타 2018.09.03

2476번 주사위 게임

백준 온라인 저지 2476번 주사위 게임문제 출처 : https://www.acmicpc.net/problem/2476 풀이 과정정답률 60%답게 쉬운 문제에 속했던 것 같습니다.간단하게 설명드리자면 3번의 주사위를 던져 얻은 눈의 수를 변수에 입력받고 규칙에 따라 값을 계산합니다.가장 많은 상금을 받을 사람을 구해야 하므로 최대값을 저장할 max 변수를 선언하고 n번 반복하면서 규칙에 따라 값을 구하고, 이를 max와 비교해 최대값을 구하면 됩니다. 소스코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io..

2503번 숫자 야구

백준 온라인 저지 2503번 숫자 야구문제 출처 : https://www.acmicpc.net/problem/2503풀이 과정수가 3자리 수 이고 n 번의 질문을 받는다고 하면 완전 탐색으로 해도 O(n*1000)을 넘지 않기 때문에 가장 단순한 방법인 brute force를 통해 해결했습니다. 완전 탐색을 하면서 가능한 모든 후보를 입력받은 수와 비교해 스트라이크와 볼의 갯수를 세고, 모든 질문들과 스트라이크와 볼의 갯수가 일치하면 카운팅해주는 방식입니다. 사이트에 있는 예제를 통해 설명드리자면 324는 질문한 세자리 수와 스트라이크, 볼의 개수가 모두 일치하기 때문에 답이 될 수 있습니다. 325는 356과 489와 비교했을 때 스트라이크와 볼의 갯수가 입력받은 갯수와 일치하지 않습니다. 따라서 32..

라이브러리

라이브러리(Library)라이브러리란? 다른 프로그램들과 링크되기 위해 존재하는, 주로 소프트웨어를 개발할 때 공통으로 사용될 수 있는 특정한 목적을 가진 함수, 클래스, 데이터 등을 모아놓은 비휘발성 자원의 모임입니다. 비휘발성이란 컴퓨터 전원이 꺼져도 정보가 지워지지 않고 계속해서 남아있는 것을 의미합니다. 라이브러리 장점 및 목적 라이브러리의 목적은 코드 재사용에 있습니다. 소프트웨어를 개발할 때마다 반복되는 작업들을 처음부터 코딩할 필요 없이 라이브러리에서 가져와서 사용하면 시간도 절약할 수 있고 개발도 용이해지기 때문이죠. 예를 들어 어떤 수의 거듭제곱을 구해주는 기능을 추가하려고 하는데 라이브러리가 없다면 밑(기저)와 지수를 입력받아 거듭제곱을 직접 구하는 코드를 작성해야 합니다. 이때 Mat..

기타 2018.08.26

1516번 게임 개발

백준 온라인 저지 1516번 게임 개발문제 출처 : https://www.acmicpc.net/problem/1516 풀이 과정이번 문제는 정점들 간에 순서를 가지고 있으므로 위상 정렬을 구현해서 각 건물을 짓는데 걸리는 시간을 구하는 문제입니다.위상 정렬에 관해서는 조만간 정리해서 포스팅하도록 하겠습니다. 어떤 건물의 시간을 구할 때 그 건물을 짓기 위해 먼저 지어져야 할 건물들은 없을 수도 있고, 한 개가 있을 수도 있고 여러 개가 있을 수도 있습니다. 어떤 건물이 지어지는데 걸리는 시간을 구할 때 우선적으로 지어져야 할 건물이 2개 이상일 경우에는 어떻게 최소시간을 구해야 할까요? 예를 들면 C 건물이 지어지는데 걸리는 시간을 구하려고 할 때 C 건물을 짓기 위해선 A 건물과 B 건물들이 지어져 있..