본문 바로가기
728x90

BOJ109

[ BOJ/C# ] 10814 나이순 정렬 https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 어제와 비슷한 문제를 풀어보았다. 이번에는 Class를 선언하여 List의 형식을 Member라는 Class로 만들어보았다. 한 가지 발전했으니 다음엔 또 다른 방법으로도 풀어보겠다. using System; using System.Text; namespace B10814 { class Program { class Member //Member 클래스 선언 { public int Age { get; se.. 2023. 9. 29.
[ BOJ/C# ] 1181 단어 정렬 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 말 그대로 조건을 이용하여 풀었다. 0. 중복된 단어는 하나만 남기고 제거 (먼저 제거해 주는 편이 속도가 빠를 듯하여 먼저 해주었다) 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 LINQ를 이용하여 풀면 직관적이고 편하지만, 속도 면에서 좋지는 않은 듯 하다. 2등분이 푸신 코드를 보니 굉장히 직관적이면서도 속도와 메모리를 효율적으로 사용한다. using System; u.. 2023. 9. 28.
[ BOJ/C# ] 1260 DFS와 BFS https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 백준에서 처음으로 DFS로 문제를 풀어본 듯하다. 이번엔 보기 좋게 전역변수와 메서드로 풀어보았다. DFS는 깊이 우선 탐색으로, 공부하며 보니 주로 재귀함수나 Stack으로 푸는 것을 알 수 있었다. 이 문제는 재귀함수로 풀어보았다. + visited를 초기화 해주기 위하여 new bool[1001]과 Array.Clear[visited]를 사용해 보았다. .. 2023. 9. 26.
[ BOJ/C# ] 11724 연결 요소의 개수 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net BFS로 풀었다. 전의 BFS들보다 고려할 조건들이 많았다. 제출을 보면 굉장히 많이 틀렸는데, 내가 간과했던 점들을 적어보았다. 1. 런타임 에러 (IndexOutOfRange) visited 배열 크기를 1000으로 설정 -> 1001로 바꾸고 해결 2. 간선이 존재하지 않는 정점들도 하나의 요소로 더해주어야 한다. 마지막에 fo.. 2023. 9. 26.
[ BOJ/C# ] 2606 바이러스 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net BFS/DFS로 풀 수 있는 문제이다. 나는 BFS로 풀었다. 아직 BFS의 형식이 자연스럽게 나오지는 않는다. 그래서 처음 배웠던 포스팅을 매번 다시 문제에 맞게 변형하며 공부한다. 이 과정은 꽤나 재미있게 느껴진다. 처음에는 그저 형식을 암기해서 풀어나갔다면, 지금은 이 부분에서는 이렇게 풀어나가면 되겠구나?생각이 든다. 마냥 어렵기만 하던 BFS의 로직이 이해가 가기 시작했다. 다음에는 DFS로도.. 2023. 9. 24.
[ BOJ/C# ] 9461 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 다이나믹 프로그래밍 문제이다. 문제 자체에 케이스도 많이 보여주었기 때문에 쉽게 풀 수 있는 문제였다. 다만, 처음 제출이 틀렸다. DP가 틀렸을 거라는 생각을 안 했기 때문에 반례를 찾으려 뒤의 숫자들을 넣어봤다. 100까지밖에 안했기 때문에, 100 가까이 넣어보니 음수로 출력되었다. (오버플로우) 이 문제를 해결하기 위해 dp배열의 자료형을 int 대신 long으로 바꿔주었더니 해결되었다. usi.. 2023. 9. 24.
728x90