본문 바로가기

반응형

백준

[c#] 백준 알고리즘 1929 - 소수 구하기 소수을 구하는 알고리즘은 기본적으로 O(n) 시간 복잡도를 가지는데 이번 알고리즘 문제는 입력이 최대 1,000,000까지이므로 시간 복잡도를 더 최소화 하는 알고리즘을 사용해야 했다. 그래서 에라토스테네스의 체라는 알고리즘으로 구현을 해보았다. 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 문제풀이 알고리즘을 구현하기 위해 기본적인 소수를 찾는 알고리즘을 알고있어야한다. 소수란 1과 자기자신으로 밖에 나눌 수없는 수이다. 즉, 약수가 2개라는 소리인데. ex) .. 더보기
정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현(복잡하지만 효율적 정렬) 정렬 알고리즘의 종류와 시간복잡도를 이전 글에 포스팅을 했고 이번에는 복잡하지만 효율적 정렬 알고리즘을 구현해보았다. [정렬 알고리즘의 종류와 시간복잡도] 정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현 정렬 알고리즘의 종류와 시간복잡도 백준 알고리즘에서 실버단계로 올라가면서 점점 알고리즘을 공부해야 한다는 필요성을 느꼈다. 그래서 가장 기본적인 정렬알고리즘에 대해 정리를 해보고 rnflajdrnfl.tistory.com 이번 블로그에서는 복잡하지만 효율적 정렬을구현을 해보았다. 시간복잡도(nlogn) 사용한 프로그래밍 언어는 c#입니다. 쉘 정렬( shell sort ) 삽입 정렬 알고리즘의 작동원리는 배열의 특정 인덱스값이 정렬된 배열과 비교되어 알맞는 자리에 삽입을 하는 과정입니다. 만약 특정 인덱.. 더보기
[c#]백준 알고리즘 1181 - 단어 정렬(sort 사용법) 이번 알고리즘을 풀면서 정렬에 대한 이해도가 조금 올라갔다. 사실 이미 .net에서 sort()라고 배열 정렬 메서드를 제공해주고 있다. 그래서 sort()사용법을 조금 더 깊게 알아보았다. 내가 스스로 알고리즘을 사용하는것도 좋지만 매번 내가 알고리즘을 작성하는 것보다 제공되는 메서드를 잘 사용하는게 더 효율적이라고 생각된다. 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다... 더보기
백준 알고리즘 2609번(유클리드 알고리즘) 나는 더 간결하고 흡입력있는 코드를 짜기 위해서 알고리즘을 공부하고있다. 알고리즘 문제를 풀고 나서 나보다 코드길이가 더 작은 사람의 코드를 보곤한다. 이번 문제도 문제를 풀고 나서 나보다 코드 길이가 작은 사람의 코드를 보았고 이해가 너무 안 되어서 chat-gpt한테 코드를 해석해달라고 하였다. 알고보니 그 코드는 "유클리드 알고리즘"을 사용하고 있었고 나는 유클리드 알고리즘에 대해 들어본적이 없어서 생소해 이해가 안 되었던 것 이였다. 그래서 처음 푼 코드와 유클리드 알고리즘을 사용하여 푼 코드 총 2개를 사용해서 문제를 풀었다. 백준 2609번 문제 문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 .. 더보기
백준 알고리즘 10989번 여태 알고리즘을 풀때 하루이상 걸린 문제가 없었지만 이건 무려 3일이나 걸려서 풀었다. 다 풀고나서 백준 문제 시스템에 엄청난 허점을 발견하게 되었다. 그건 바로 나의 코드가 틀렸을때의 테스트 케이스를 알지 못하는 것이다. 그렇기 때문에 예제 입력만 가지고 VS에서 풀때는 오류가 나지 않았지만 제출을 하게되면 틀렸다고만 뜬다... 그래서 50번 정도 시도했다.. 그만큼 배운게 많고 자세히 설명되어 있는 글이 없어서 내가 작성을 해본다. 아래링크에 있는 다른사람이 푼 코드를 참고기반으로 풀었다. https://www.acmicpc.net/board/view/50936 글 읽기 - [C#] 시간초과, 메모리초과, 런타임에러 질문입니다. 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net 백준 .. 더보기
(C#) AI와의 대결 : 백준 알고리즘 2741번 Chat-GPT와 코드 비교 이번에는 다소 당황스러운 문제를 가지고 왔다. 문제 난이도는 브론즈 5로 어려운 문제는 아닌데 C#언어를 다루는 사람입장에서는 다소 당황스러웠다. 전체 정답비율이 56퍼인데 반해 C#하는 사람들의 제출결과는 반타작도 되지 못한다. 왜 그런지 같이 살펴보자. 백준 2741번 문제 문제 : 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다. 출력 : 첫째 줄부터 N번째 줄 까지 차례대로 출력한다. 문제풀이 문제는 사실 반복문만 알고있으면 바로 풀수있는 정도의 문제이다. 밑의 코드로 작성해서 채점을 한 결과.. 계속 시간초과가 났다. int num = Int32.Parse(Console.ReadLin.. 더보기
(C#) AI와의 대결 : 백준 알고리즘 1001번 Chat-GPT와 코드 비교 이번에는 백준알고리즘 1001번 문제이다. Chat-GPT를 사용하여 질문을하는게 낮설다보니 질문에 따라 답이 다르게 나온다. 이번 블로그 글을 작성하기 위해 질문을 했을때 내가 원하는 결과가 나오지 않았지만 질문을 추가하니 꽤나 블로그 글 같아졌다. 백준 1001번 문제 문제 : 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 : 첫째 줄에 A-B를 출력한다. 문제풀이 밑에서 부턴 Chat-GPT에게 블로그글을 써보라고 시켜본 결과이다. Chat-GPT에게 물어본 문장- [처음] 문제 : 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 A와 B가 주어진.. 더보기
(C#) AI와의 대결 : 백준 알고리즘 1000번 Chat-GPT와 코드 비교 최근에 나는 백준 알고리즘을 풀기 시작했다. 그래서 내가 푼 알고리즘을 블로그에 올려야지 생각을 했다가 미루기만했다. 최근 chat-GPT에 대한 관심이 많아졌고 이를 이용할 방법을 찾다가 둘다 사용할 법을 찾았다. 이제 내가 귀찮게 구글에 검색하고 조사할 필요없이 Chat-GPT를 사용하려 꾸준하게 블로그를 쓸 예정이다. 백준 1000번문제 문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 : 첫째 줄에 A+B를 출력한다. 문제풀이 밑에서 부턴 Chat-GPT에게 블로그글을 써보라고 시켜본 결과이다. Chat-GPT에게 물어본 문장 블로그에 내가 푼 알고리즘 문제와 너가 푼알고리즘 문제를 비교.. 더보기

반응형