본문 바로가기

백준c언어3

백준 2670 연속부분최대곱 C언어_230119 c를 배우던 초기에 코딩테스트에서 1시간 동안 구현해도 실패했던 문제이다. 지금은 10분? 정도 안 걸려서 구현한 것 같다. 핵심은 double 형 사용 및 적절한 순간에 초기화와 비교인 것 같다. 막상 짜보니 엄청 간단한 코드인데 왜 그때는 어렵게 풀었을까.. 나는 입력을 배열로 받은 다음에 이중반복문을 통해 j=i와 같을 때부터 하나씩 곱해가면서 최댓값을 찾았다. 그다음 바깥 반복문에서 안쪽에서 구한 max값과 바깥의 max2를 비교하여 더 큰 값을 max2에 저장하였다. 그 후 max2값을 출력하면 끝! #include #define swap(x,y) {int z=x;x=y;y=z;} int main(){ int n; double a[10010],max,max2=0,mul; scanf("%d",&n.. 2023. 1. 19.
백준 2578 빙고 C언어_230117 빙고 문제를 만만하게 도전했다가 처참히 혼났다. 문제의 접근자체는 어렵지 않다. 5x5행렬에 빙고판을 먼저 입력받고 25개의 숫자를 하나씩 입력받다가 3줄이 되는 순간 반복문을 탈출하여 그때의 순서를 출력한다. 초기 구현은 다들 문제없이 할 수 있을 것이다. 숫자가 1부터 25까지의 자연수이므로 나는 입력받은 수를 배열에서 0으로 초기화하고 0이 5개이면 1줄을 카운트하고자 했다. 문제는 여기서부터다. 가로 세로 대각선 1, 대각선 2를 별도로 구현을 해야 하는지 반복문안에서 한 번에 구현을 할 수 있는지 확신이 안 섰기 때문이다. 그래서 처음엔 한꺼번에 하려다가 제대로 출력이 나오지 않았고, 각 경우를 별로의 loop를 돌려 구하고 합산하는 방식으로 구현했다. 여기서 핵심은 각 루프가 끝난 후 새로운 .. 2023. 1. 18.
백준 10162 전자레인지 C언어_230113 백준 전자레인지 문제다. 3개의 버튼이 특정 값일 때 출력하면 되는 간단한 문제로 처음에는 3중 루프를 돌려서 값을 찾았다. #include int main(){ int n; int sum=-1,cnt=0; scanf("%d",&n); for(int i=0;i 2023. 1. 13.