전체 글
-
백준 2993(세 부분) c++백준 문제 2021. 9. 6. 00:14
문제 2993번: 세 부분 첫째 줄에 원섭이가 고른 단어가 주어진다. 고른 단어는 알파벳 소문자로 이루어져 있고, 길이는 3보다 크거나 같고, 50보다 작거나 같다. www.acmicpc.net 주어진 단어를 세등분으로 나누어 한등분씩 역배치 하여 마지막에 역배치한 세등분을 다시 한등분으로 합쳐서 가장 단어의 사전순이 빠른 단어를 찾는 문제입니다. 처음에 세등분으로 나눈다는게 어떤 기준도 없고 해서 단순히 단어의 알파벳 개수의 12자 이면 4/4/4로 나누는 줄 알았습니다. 하지만 그러기에는 너무 단순했고 예제 문제도 틀리게 나왔습니다. 알고보니 세등분으로 나누는게 알파벳 개수의 제한 되지않고 알파벳 개수가 1개여도 나눌 수 있었습니다. 예를들어서 1/1/10 도 가능하고 10/1/1도 가능했습니다. 따..
-
백준 1008(A/B) c++백준 문제 2021. 9. 5. 23:05
문제 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 단순히 정수 A,B를 입력받고 A/B를 출력하는 문제입니다. 하지만 여기서 짚고 넘어가야할점이 출력형태가 실제정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하이면 정답이라는 점입니다. 정확히 무슨 소리인지 이해가 안갔습니다. 그래서 무작정 소수점 9자리 까지 출력하라는 것이구나 라고 생각해 코드를 짰습니다. int a, b; scanf("%d", &a); scanf("%d", &b); printf("%.9f", (float)a / b); 정수 a와b를 받아 그 둘을 나누고 출력형태에서 float값을 캐스팅 해주고 소수점 자리 9자리까지 출력했습니다. 그랬더니 소수점 7..
-
백준 1158(요세푸스 문제) c++백준 문제 2021. 9. 5. 17:43
문제 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 1번 부터 n번까지 사람이 둥글게 원을 이루며 앉아 있다고 가정합니다. 이때, k번째 사람을 제거하는데 제거 당하는 사람의 순서가 오세푸스 순열이 됩니다. 예를들어 n=7이고 k=3이면 1번 부터 7번까지의 사람을 k번째 제거하면 k=3이므로 남아있는 사람은 1, 2, 4, 5, 6, 7이 되고 제거된 3은 요세푸스 첫번째 원소로 들어갑니다. 또 k번째 사람을 제거하면 1, 2, 4, 5, 7이 되고 제거된 6은 요세푸스 두번째 원소로 들어갑니다. 이렇게 사람이 없어질때 까지 반복한 요세푸스 순열을 구하면 됩니다. int n, k; cin >> n..
-
백준 10804(카드 역배치) c++백준 문제 2021. 9. 5. 16:20
문제 10804번: 카드 역배치 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. www.acmicpc.net 숫자카드 가 1부터 20까지 오름차순으로 놓여져 있다고 가정합니다. 이때 구간을 입력 받으면 그 구간의 수들을 역배치 하고 출력하는 문제 입니다. 예를 들어 구간이 [1,5] 이렇게 주어진다면 1번 카드부터 5번 카드를 역배치 시키는 문제 입니다. c++의 stl 함수인 reverse 함수를 사용해 주었습니다. reverse 함수는 구간을 설정할 수 있는데 만약 벡터 v가 있다고 할때 reverse(v.begin(),v.end())이렇게 주어지면 v.begin()이 가리키는 원소를 포함해서 ..
-
백준 15552(빠른 A+B) C / C++백준 문제 2021. 9. 5. 15:33
문제 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 단순한 수학 구현 문제입니다. 몇번 계산 할지 테스트 케이스 T개를 입력받아 정수 A와 B를 입력받아 A와B를 더해주는 값을 출력해주는 문제입니다. 먼저 C언어로 풀은 코드 입니다. #include int main(){ int T; //테스트케이스 선언 int A, B; //정수 A,B선언 scanf("%d", &T); //몇번 계산할지 테스트케이스 입력받기 for (int i = 0; i < T; i++) { //T번 동안 계산 반복 scanf("%d %d", &A, &B)..
-
실수형 (부동 소수점)헷갈렸던것 2021. 9. 3. 19:45
실수형 float를 공부하다 부동소수점 개념이 나와서 한번 이해하는대로 정리해 보려합니다. 먼저 예를 들어 실수 263.3을 2진수로 나타내 보면 정수 부분 263 = 100000111 실수 부분 0.3 = 0.01(0011)(0011)(0011)(0011)(0011)....... 이렇게 실수 부분이 무한적으로 반복되는 것을 알 수 있습니다. 따라서 컴퓨터는 오차는 있겠지만 이러한 실수부분을 저장해야합니다. 그 방법에는 고정 소수점과 부동 소수점이 있습니다. 고정 소수점 미리 정수 비트 와 소수 비트를 정해 놓는 방식 입니다. 4byte =32bit 기준으로 예를들어 1bit는 부호 표시용, 16bit는 정수 부분, 15bit 는 실수 부분으로 정해놓으면 더 큰수나 정밀한 수를 표현하기에 어렵습니다. 정..
-
#1 (c언어 리뷰 & c++ 기본)2021 ICPC 신촌 여름 알고리즘 캠프 (초급) 2021. 9. 3. 18:50
1. 정수 자료형 자료형 메모리 크기 값의 범위 char 1 byte -128 ~ 127 short unsigned short 2 byte -32,768 ~ 32,767 0 ~ 65,535 int unsigned int 4 byte -2,147,483,648 ~ 2,147,483,647 0 ~ 4,294,967,295 long long int unsigned long long int 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,306,854,775,807 0 ~ 18,446,744,073,709,551,615 보통 int 형만 사용 해 왔었는데 많은 자료형이 있어서 상당히 어지러웠습니다. 또 자료형의 공통점은 앞에 unsigned 가 붙으면 음수는 표현하지 못하는것 ..
-
#0 신촌 여름 알고리즘 캠프(초급) 첫 시작2021 ICPC 신촌 여름 알고리즘 캠프 (초급) 2021. 9. 1. 22:49
Sogang ICPC에 6월 4일에 들어오게 되어서 본격적으로 여름 방학부터 신촌연합 ICPC에 참여할 수 있었습니다. 아직 학교에서 c언어 밖에 배우지 못한 기초학습자 이지만 알고리즘이라는 것을 한번 배워보고 싶어서 무작정 신청 했던것 같습니다. 초급반 커리큘럼인데 사실 이미 알고 있었던 주제는 단 한개도 없었습니다.. 그래서 오히려 이번 알고리즘 캠프가 저에게는 더욱 성장할 수 있게하는 힘이 될것을 확신 했습니다.