일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- 컴퓨터공학 #c #c언어 #문자열입력
- HTML #CSS
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- 잔
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- Today
- Total
목록알고리즘 문제 풀이/BOJ (77)
영벨롭 개발 일지
https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net N 팩토리얼 문제는 보통 재귀 호출을 통해 풀 수 있습니다. 때문에, 처음 문제를 접했을 때 재귀 호출을 통해 N! 을 먼저 구한 뒤에 답을 도출했습니다. 하지만! 이 방법으로 문제를 풀게 되면 시간초과가 뜹니다 ㅠ ㅠ 팩토리얼을 구하는 데에 너무 많은 시간을 소비하기 때문이지요. 처음 0이 아닌 숫자가 나올때까지의 0의 개수를 구하라는 것은 즉 10의 개수, 더 정확히 말하자면 5의 개수를 구하라는 것입니다! 예시로 100!을 보겠습니다. 5의 배수를 제외한 나머지 숫자들은 약수로..
https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 위 문제를 풀기 위해 유클리드 호제법을 사용할 수 있습니다. 최대 공약수 구하기 최대 공약수를 구할 때 유클리드 호제법이 사용되는데, 풀이 과정은 다음과 같습니다. (1) 큰 숫자를 작은 숫자로 나눈 나머지 (2) (1)에서 구한 나머지 값으로 작은 숫자 다시 나누기, 그 나머지 (3) 나머지가 0이 될 때까지 위 과정 반복 (4) 나머지가 0일 때 나눈 값이 최대 공약수 최소 공배수 구하기 최대 공약수를 구했다면, 최소 공배수는 쉽게 구할 수 있습니다. 최대 공..
https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 10799번은 스택을 사용하여 문제를 해결할 수 있습니다. 스택(stack)은 FILO(First In Last Out) 형식의 자료구조로, 한 쪽 끝에서만 원소를 삽입(push), 삭제(pop)할 수 있습니다. 일반적으로 괄호 문제는 스택을 활용하여 푸는데요, 여는 괄호('(')는 스택에 push하고 닫는 괄호(')')를 만날때마다 스택의 원소를 하나씩 pop합니다. #include #include #in..
https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 먼저 코드부터 보겠습니다. #include #include #include using namespace std; int main(void) { char str[100001]; //문자열 vector buf; //단어 저장할 스택 int j; int flag = 0; //태그 사이임을 판별할 flag cin.getline(str, 100001); //공백 포함하는 문..
https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 풀이과정 공백을 포함하는 문자열 입력 공백(' ')을 기준으로 스택을 사용하여 단어 저장 단어가 저장된 스택을 이용하여 문자열의 해당 단어를 교체 #include #include #include using namespace std; int main(void) { int T; char str[1001]; //문자열 vector buf; //단어 저장할 스택 int j; cin >> T; ci..