본문 바로가기

전체 글53

백준 1517번 버블 소트(C) 문제N개의 수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에 대해서 버블 소트를 수행할 때, Swap이 총 몇 번 발생하는지 알아내는 프로그램을 작성하시오.버블 소트는 서로 인접해 있는 두 수를 바꿔가며 정렬하는 방법이다. 예를 들어 수열이 3 2 1 이었다고 하자. 이 경우에는 인접해 있는 3, 2가 바뀌어야 하므로 2 3 1 이 된다. 다음으로는 3, 1이 바뀌어야 하므로 2 1 3 이 된다. 다음에는 2, 1이 바뀌어야 하므로 1 2 3 이 된다. 그러면 더 이상 바꿔야 할 경우가 없으므로 정렬이 완료된다.입력첫째 줄에 N(1 ≤ N ≤ 500,000)이 주어진다. 다음 줄에는 N개의 정수로 A[1], A[2], …, A[N]이 주어진다. 각각의 A[i]는 0 ≤ |A[i].. 2024. 9. 3.
백준 28426번 팰린드롬 분할(C) 문제다음 두 조건을 만족하는 길이 N의 수열 A_1,A_2,...,A_N을 아무거나 하나 구해서 출력해 보자.수열의 원소는 모두 다르고 2 이상 10^6 이하의 정수이다. 1 이상 N 이하의 모든 정수 i에 대해서, A_i가 A_1+A_2+...+ A_N$의 약수가 되는 정수 i는 정확히 1개이다.입력첫째 줄에 정수 N이 주어진다. (1 출력첫째 줄에 조건을 만족하는 수열 A_1,A_2,...,A_N을 공백으로 구분하여 출력한다.조건을 만족하는 수열은 항상 존재한다.링크https://www.acmicpc.net/problem/28426풀이어떤 3 이상의 수 k의 배수들을 생각해보자. 이 수들의 합은 k(1 + 2 + 3 + ... + n)일 것이다. 여기 k보다 작은 수 a를 더한다면 이 수는 k의 배수.. 2024. 9. 2.
AtCoder Beginner Contest 369 풀이 및 후기 보통은 코포나 앳코더 후기를 안쓰려고 하는데 오늘은 쓸 수 밖에 없었다. (대회 끝나고 30분 뒤에 G를 풀어서...) 당장 레이팅은 크게 안 바뀌었지만, 성장하는 것이 느껴지는 시점이 온 것 같다. A. 369 (02:13, +1) a = b가 같을 때를 고려하지 않아서 틀렸다.a = b일 때는 1, 그렇지 않다면 (a + b)%2 = 0 이면 3, 그렇지 않으면 2를 출력하면 AC를 받을 수 있다. 소스코드#include int main(){ int a,b; scanf("%d %d",&a,&b); if(a==b)printf("1"); else if((a+b)%2==0)printf("3"); else printf("2");}  B. Piano 3 (05:12) L은 L끼리, .. 2024. 9. 1.
제 1회 2024 디미고 프로그래밍 챌린지 Open Contest 풀이 및 후기 백준에서 대회가 자주 열리길래 최대한 많이 참가하고 있다. 내 실력이 형편없다는 사실과 문제가 재밌다는 사실만 계속 상기되는 것 같다.  A. 디미고에 가고 싶어! (00:04, +1) A가 홀수, B가 짝수라면 문제를 간단하게 해결할 수 있다. (B - A + 1)/2번 페이지를 촬영하여야 한다.이때, A가 짝수, B가 홀수라면 그 페이지는 따로 한 번씩 더 촬영해주어야 하므로 이를 예외처리 해준다면 간단하게 맞을 수 있다. 맞왜틀 소스코드#include int main(){ int n,m,ans = 0; scanf("%d %d",&n,&m); if(m%2) { m--; ans++; } if(!(n%2)) { n++; .. 2024. 8. 31.