본문 바로가기

C언어

(3)
[백준 1406] 에디터 문제 링크 www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net ✅ 커서의 왼쪽에 들어가는 문자들과, 커서의 오른쪽에 들어가는 문자들을 따로 보관하였다. 커서가 움직일 때마다 왼쪽과 오른쪽 문자가 들어있는 배열에 push 하고 pop 하여 구현하였다. R의 최대는 600000 이고, L은 커서를 왼쪽으로 옮길 때 입력이 되기 때문에 (문자 입력+L 동작이 필요) 300000을 최대로 잡았다. C언어로 풀었는데, 아마 C++ 이나 파이썬에서는 stack 을 활용해서 ..
C언어 반올림, 헤더없이 구현하기 반올림 구할 때 당연하게 #include 해서 round() 함수를 썼었는데, 알고리즘 문제풀이 사이트에서는 헤더파일 포함이 안되더라고요. 그래서 반올림을 헤더 없이 구현해보았습니다. 양수의 경우 bias로 0.5를 더해준다음에 int 형식으로 변환해주면 됩니다. #include int round(float value){ value += 0.5; return (int)value; } void main(void) { float a = 2.875f; float b = 2.1234f; printf("%f ==> %d\n", a, round(a)); printf("%f ==> %d\n", b, round(b)); } 음수의 경우도 마찬가지로, 0.5를 빼주면 될 것 같습니다. #include int round(..
[정올: 정보올림피아드] 126 : 반복제어문1 - 형성평가2 문제풀이 문제 0 이상의 정수들이 공백으로 구분되어 반복적으로 주어진다. 0이 입력되면 반복문을 멈추고 그 전까지 입력받은 수들에 대하여 홀수의 개수와 짝수의 개수를 출력하는 프로그램을 작성하시오. 내가 푼 답안 #include int main() { int num = 0, odd = 0 , even = 0; while (1) { scanf("%d", &num); if(num == 0) break; num%2 == 0? even++: odd++; } printf("odd : %d\neven : %d", odd, even); return 0; } 이거 한 번 틀렸다가, 수정해서 맞았다. 틀렸던 게 좀 황당해서 기록하는데, 출력 시 "odd : " 인데 "odd: " 라고 띄어쓰기 안해서 wrong answer가 떴..