전체 글 115

[C언어] 백준 1978 : 소수 찾기

백준 1978 : 소수 찾기 문제 링크 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 문제 내용 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. Idea 소수란 약수가 자기자신과 1만 있는 수를 의미한다. 반복문을 사용하여 2부터 num까지 num의 약수가 있는지를 확인하고 없다면 cnt에 더해준다. Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include int main() { int N, num, cnt = 0; scanf("%..

백준 Baekjoon 2020.07.24

[C언어] 백준 4949 : 균형잡힌 세상

백준 4949 : 균형잡힌 세상 문제 링크 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단 www.acmicpc.net 문제 내용 (요약) "(" 와 ")", "[" 와 "]"이 서로 짝을 이루면 균형잡힌 문자열이라고 할 때, 주어진 문자열에 대해 균형잡힌 문자열인지 아닌지를 판단하자. Idea (, ), [, ] 를 만날 때마다 스택에 push하거나 pop하면서 균형잡힌 문자열인지 판단한다. "(" 또는 "["를 만나면 스택에 쌓는다. ")" 또는 "]"를 만나면 스택의..

백준 Baekjoon 2020.07.24

[JAVA] 백준 4228 : The Dragon of Loowater

백준 4228 : The Dragon of Loowater 문제 링크: https://www.acmicpc.net/problem/4228 4228번: The Dragon of Loowater The input contains several test cases. The first line of each test case contains two integers between 1 and 20000 inclusive, indicating the number n of heads that the dragon has, and the number m of knights in the kingdom. The next n lines each contain an www.acmicpc.net 문제 내용: (요약) 머리가 n개가..

백준 Baekjoon 2020.07.23

[정렬] 선택 정렬 Selection Sort

선택 정렬 Selection Sort 선택 정렬이란? 최소 혹은 최댓값부터 찾아 정렬하는 방법 다른 정렬들에 비해 비교적 쉽게 구현이 가능하다. (오름차순일 때) 첫 인덱스부터 정렬하는 방법으로 기준으로부터 오른쪽 값들과 비교하여 가장 작은 수를 찾아 값을 교환한다. -핵심코드 1) A와 B의 값을 교환 tmp = A; A = B; B = tmp; 2) for문의 범위 설정 for( i=0; i < SIZE -1; i++){ for( j=i+1 < SIZE; j++){ ... } } 바깥 for 문 현재 기준 인덱스를 가리키는 역할 범위는 SIZE-1까지(SIZE-1까지 정렬하면 마지막은 정해지기 때문) 내부 for 문 최소(혹은 최대) 값을 찾는 역할 범위는 기준+1부터 SIZE까지 정렬 예시 선택 정..

알고리즘/정렬 2020.07.22

[C언어] 백준 10809 : 알파벳 찾기

백준 10809 : 알파벳 찾기 문제 링크 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 문제 내용 (요약) 길이가 최대 100인 단어를 입력받아 각각의 알파벳에 대해서 처음 등장하는 위치를 공백으로 구분하여 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. Idea 이 문제는 한 문장의 알파벳 빈도수를 구하는 알고리즘을 할 줄..

백준 Baekjoon 2020.07.22

[C언어] 백준 2902 : KMP는 왜 KMP일까?

백준 2902 : KMP는 왜 KMP일까? 문제 링크 https://www.acmicpc.net/problem/2902 2902번: KMP는 왜 KMP일까? 문제 KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭 www.acmicpc.net 문제 내용 (요약) 입력받은 이름의 첫번째 글자만 엮서 새로 출력한다. 입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이폰으로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드시 대문자이다. 그 외의 모든 문자는 소문자이다. ex) K..

백준 Baekjoon 2020.07.22

[자료구조] 스택 Stack

스택 Stack 스택이란? 스택이나 큐, 트리와 같은 자료구조는 자신이 행위적 측면을 포함하는 자료구조이다. 이런 자료 구조는 제한된 접근 방식을 규정하고 있으며 이를 추상적 자료 구조(Abstrct Data Structure)라고 한다. 스택은 제일 나중에 들어간 것이 제일 먼저 나오는 LIFO(Last In First Out) 구조로 배열이나 연결 리스트(Linked List)로 구현할 수 있다. 배열로 구현하기는 쉽지만 처음에 스택의 크기를 지정해줘야 한다는 단점이 있고, 연결 리스트는 크기를 동적으로 할당하기 때문에 용량에 대해서는 제한(최대 메모리까지)이 없지만 구현하기는 비교적 어렵다는 단점이 있다. 스택의 구성 스택은 기본적으로 데이터를 삽입할 수 있는 push와 스택에서 데이터 하나를 빼내..

[C언어] 백준 2822 : 점수 계산

백준 2822 : 점수 계산 문제 링크 https://www.acmicpc.net/problem/2822 2822번: 점수 계산 문제 상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결 www.acmicpc.net 문제 내용 (요약) 참가자는 총 8개의 문제를 푼다. 이 때, 참가자의 총 점수는 가장 높은 점수 5개의 합이다. 첫째 줄에는 참가자의 총점을 출력하고, 둘째 줄에는 어떤 문제가 최종 점수에 포함되었는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다. Idea 이 문제를 풀기위해서는 점수가 높은 5문제의 합과 문제 번호가 필요하다..

백준 Baekjoon 2020.07.21

[C언어] 백준 6378 : 디지털 루트

백준 6378 : 디지털 루트 문제 링크 https://www.acmicpc.net/problem/6378 6378번: 디지털 루트 문제 양의 정수 N의 디지털 루트를 구하려면 N을 이루고 있는 모든 자리수를 더해야 한다. 이때, 더한 값이 한 자리 숫자라면, 그 수가 N의 디지털 루트가 된다. 두 자리 이상 숫자인 경우에는 다�� www.acmicpc.net 문제 내용 (요약)양의 정수 N의 디지털 루트를 구하려면 N을 이루고 있는 모든 자리수를 더해야 한다. 이때, 더한 값이 한 자리 숫자라면, 그 수가 N의 디지털 루트가 된다. 두 자리 이상 숫자인 경우에는 다시 그 수를 이루고 있는 모든 자리수를 더해야하며, 한 자리 숫자가 될 때 까지 반복한다. 양의 정수 N이 주어졌을 때, 그 수의 디지털 루..

백준 Baekjoon 2020.07.21

[C언어] 백준 4659 : 비밀번호 발음하기

백준 4659 : 비밀번호 발음하기 문제 링크 https://www.acmicpc.net/problem/4659 4659번: 비밀번호 발음하기 문제 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들�� www.acmicpc.net 문제 내용 (요약) 입력받은 패스워드에 대해 품질을 평가한다. 높은 품질을 가진 비밀번호의 조건은 다음과 같다. 모음(a, e, i, o ,u) 하나를 반드시 포함하여야 한다. 모음이 3개 혹은 자음이 3개 연속으로 오면 안된다. 같은 글자가 연속적으로 두번 오면 안되나, ee와 oo는 허용한다. end를 입력하면 프로그램을 종료한다. Idea 이..

백준 Baekjoon 2020.07.21