백준알고리즘 썸네일형 리스트형 [c#]백준 알고리즘 10845 - 큐 이제 구현 파트에서 자료구조 파트를 넘어가는 시기가 되었다. 이제 코드를 구조적으로 구현 할 수있다는 생각을 하니 조금은 뿌듯하다. C#에서 큐 클래스가 이미 구현되어있기 때문에 큐 클래스를 사용하여 풀었다. 밑에는 큐 구현 및 메소드를 정리한 포스트이다. 큐( queue )의 구현과 메소드 사용 [C#] 큐 ( queue ) 요소가 한쪽 끝(후면)에서 추가되고 다른 쪽 끝(전면)에서 제거되는 요소 컬렉션을 나타내는 추상 데이터 유형 대기열은 FIFO(First In First Out,선입선출) 원칙을 따른다. 즉, 먼저 추가된 rnflajdrnfl.tistory.com 문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push .. 더보기 정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현(복잡하지만 효율적 정렬) 정렬 알고리즘의 종류와 시간복잡도를 이전 글에 포스팅을 했고 이번에는 복잡하지만 효율적 정렬 알고리즘을 구현해보았다. [정렬 알고리즘의 종류와 시간복잡도] 정렬 알고리즘 시간 복잡도, 공간 복잡도와 구현 정렬 알고리즘의 종류와 시간복잡도 백준 알고리즘에서 실버단계로 올라가면서 점점 알고리즘을 공부해야 한다는 필요성을 느꼈다. 그래서 가장 기본적인 정렬알고리즘에 대해 정리를 해보고 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와의 대결 : 백준 알고리즘 2231번 Chat-GPT와 코드 비교 이 문제는 내가 알고리즘에 취약하다는 걸 알려준 문제이다. 지금까지의 알고리즘 문제는 알고리즘이라고 하기보단 논리적인 수학접근법으로 코드를 작성하면 잘 풀렸다. 그래서 이 문제를 시도할때도 분명 규칙이 있을 것이라 생각했다. 2~3시간 고민해도 쉽게 답이 나오지 않았고 이 문제가 브루트 포스 알고리즘이라는 것을 알게되면서 바로 풀렸던 문제다. 백준 2231번 문제 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로,.. 더보기 (C#) AI와의 대결 : 백준 알고리즘 10951번 Chat-GPT와 코드 비교 전에 게시한 게시물과 같이 이번에도 많이 틀린 문제를 가져왔다. 이번에는 C#언어 뿐아니라 전체 언어를 다루는 사람들도 당황스러워 했던 문제 같다. 정답률은 35퍼밖에 되지 않는다. 나는 이미 풀었지만 내가 정확한 입력값을 준다면 Chat-GPT는 정확한 출력값을 내는지 확인해보자. 백준 10951번 문제 문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 : 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 : 각 테스트 케이스마다 A+B를 출력한다. 문제풀이 사실 문제자체가 애매하게 나왔다. 입력이 여러개의 테스트 케이스로 이루어져 있다고만 말을 하고 .. 더보기 (C#) AI와의 대결 : 백준 알고리즘 2741번 Chat-GPT와 코드 비교 이번에는 다소 당황스러운 문제를 가지고 왔다. 문제 난이도는 브론즈 5로 어려운 문제는 아닌데 C#언어를 다루는 사람입장에서는 다소 당황스러웠다. 전체 정답비율이 56퍼인데 반해 C#하는 사람들의 제출결과는 반타작도 되지 못한다. 왜 그런지 같이 살펴보자. 백준 2741번 문제 문제 : 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 입력 : 첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다. 출력 : 첫째 줄부터 N번째 줄 까지 차례대로 출력한다. 문제풀이 문제는 사실 반복문만 알고있으면 바로 풀수있는 정도의 문제이다. 밑의 코드로 작성해서 채점을 한 결과.. 계속 시간초과가 났다. int num = Int32.Parse(Console.ReadLin.. 더보기 이전 1 2 다음