본문 바로가기
728x90

전체 글239

[ BOJ/C# ] 2579 계단 오르기 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net DP 문제 중에서도 꽤나 헷갈렸던 문제이다. 경우의 수를 따져 최댓값을 구하였다. 조건들을 정확히 파악하는 것이 중요하다. n==1일 때와 n==2일 때의 조건을 정확히 나누지 않아 초반에 인덱스 에러가 났다.. using System; using System.IO; namespace B2579 { class Program { static void Main() { StreamReader sr = new Str.. 2023. 10. 7.
[ BOJ/C# ] 9375 패션왕 신해빈 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 입력에 따른 경우의 수를 구하는 문제이다. 각 의상 종류의 개수+1 (해당 종류를 입지 않는 경우+1) 을 곱하면 모든 조합의 경우의 수가 나온다. 모든 수에서 -1 (모든 종류를 입지 않는 경우..알몸)을 제외하면 문제에서 의도하는 경우의 수가 나온다. using System; using System.I.. 2023. 10. 5.
[ BOJ/C# ] 11659 구간 합 구하기 4 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 구간 합은 모든 구간별의 누적 합을 구한 뒤, 지정 구간 이전의 누적 합을 빼면 나온다. using System; using System.IO; using System.Text; namespace B11659 { class Program { static void Main() { StreamReader sr = new StreamReader(Console.OpenStandar.. 2023. 10. 4.
[ BOJ/C# ] 11651 좌표 정렬하기 2 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net https://narmhye.tistory.com/entry/BOJC-11650-%EC%A2%8C%ED%91%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0 [ BOJ/C# ] 11650 좌표 정렬하기 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수.. 2023. 10. 4.
[ BOJ/C# ] 17626 Four Squares https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net DP 문제이다. 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다는 증명은 굉장히 흥미로웠다. n==1부터 n==7까지는 n이 제곱수이면 1, 이후 +1씩 증가했다. 하지만 n==8부터는 그동안과 다른 패턴들이 나온다. 이는 일정한 규칙으로 보이지 않고 가장 가까운 제곱수의 합을 포함하지 않은 경우, 최소 개수가 나올 경우가 존재한다. 따라서 최.. 2023. 10. 3.
[ BOJ/C# ] 9012 괄호 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 단순히 괄호의 수만 확인하는 것이 아니라, 한 쌍의 괄호가 아니게 되는 조건을 찾아 NO를 출력해야 했다. using System; using System.Text; namespace B9012 { class Program { static int IsVPS(string str) { Stack stack = new Stack(); int r = 0; for (int j.. 2023. 10. 1.
[ BOJ/C# ] 11866 요세푸스 문제 0 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 원형 큐를 만들어 푸는 문제인 듯하다. 이번에는 다른 방법으로 풀어보고 싶어 생각나는 대로 풀어보았다. 처음에는 시간초과가 떴는데, index를 먼저 더해주었더니 k가 1일 경우에 무한루프로 돌아가는 것이 원인이었다. 위치와 조건을 확실히 해주니 맞았다. using System; using System.Text; namespace B11866 { class Program { static void Main() { StreamReader sr = new StreamReader(Cons.. 2023. 9. 30.
[ BOJ/C# ] 11650 좌표 정렬하기 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net https://learn.microsoft.com/ko-kr/dotnet/api/system.array.sort?view=net-7.0#system-array-sort(system-array-system-collections-icomparer) Array.Sort 메서드 (System) 1차원 배열의 요소를 정렬합니다. learn.microso.. 2023. 9. 29.
[ 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.
728x90