14889: 스타트와 링크
·
PS/BOJ
시간 제한 메모리 제한 2초 512MB 문제 오늘은 스타트링크에 다니는 사람들이 모여서 축구를 해보려고 한다. 축구는 평일 오후에 하고 의무 참석도 아니다. 축구를 하기 위해 모인 사람은 총 N명이고 신기하게도 N은 짝수이다. 이제 N/2명으로 이루어진 스타트 팀과 링크 팀으로 사람들을 나눠야 한다. BOJ를 운영하는 회사 답게 사람에게 번호를 1부터 N까지로 배정했고, 아래와 같은 능력치를 조사했다. 능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 팀의 능력치는 팀에 속한 모든 쌍의 능력치 Sij의 합이다. Sij는 Sji와 다를 수도 있으며, i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치는 Sij와 Sji이다. (이하 생략) 입력 첫째..
2225: 합분해
·
PS/BOJ
시간 제한 메모리 제한 2초 128 MB 문제 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오. 덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다. 입력 첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다. 출력 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. 풀이 일단 K개의 정수로 N을 만들어냈을 때, K - 1개의 정수로 N - a 를 만든 것과 1개의 정수로 a를 만든 경우의 합과 같다는 것을 알았다. 부분 해를 합해 전체 해를 얻을 수 있으므로 DP를 쓰는 문제인 건 확실하다. 문제는 점화식이 어떻게 되는 건지 정리가 ..
11660: 구간 합 구하기 5
·
PS/BOJ
11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 기초적인 다이나믹 프로그래밍 문제다. 입력에서 테스트케이스 개수가 100,000까지 주어지는 걸로 봐서는 절대 매번 따로 연산하는 방법으로 해결할 수 없다. 두 좌표가 주어지면, 그 좌표를 기준으로 미리 처리된 값으로 연산해 연산 횟수를 일정하게 유지하도록 해야 하는 문제. 입력은 N*N 정사각행렬 형태로 주어진다. 처음 문제를 봤을 때는 (x1, y1)부터 개행하며 (x2, y2)까지의 모든 항을 합하는 문제인 줄 알았..
2023 제1회 춘배컵
·
기타
GTPC를 처음으로 코딩 대회의 재미를 알아버린 나... 겁대가리를 상실해 당장 오늘 아침에 열린 1회 춘배컵에 참여했다. 무엇보다 1문제만 풀어도 솔브닥 춘배 뱃지, 배경을 준다는데 어떻게 안하고 배기냐!!!!!!!!!!!!!!!!! 머 결과는 참혹하지만 재밌었다. F는 어케 푸는 건지 알듯말듯 했는데 시간 없어서 넘겼고 D는 구현은 성공했는데 시간초과... 나중에 문제 유형보니까 정렬이라던데 이게 정렬로 어케 풀리는거냐.?. 꾸준히 공부하지 않은 나는 실딱이고 골드는 운 좋아야 풀리는 정도. 재귀 공부 제대로 안하면 진짜 나중에 크게 후회할 것 같다. 알고리즘 이론은 기본적인 것부터 하나씩 블로그에 정리해가면서 공부해야겠다. C#은 개발할 때만 쓰고 알고리즘 공부할 때는 걍 앞으로 파이썬 쭉 쓰자....
9251: LCS
·
PS/BOJ
https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net LCS는 가장 긴 공통 부분 수열을 찾는 유형의 문제를 이르는 말인 것 같다. 우선 풀이는 완전탐색(브루트포스), 동적계획법이 가능하다. 어느 블로그를 찾아보니 LCS가 두 가지 문제 유형으로 나뉜다고 한다. 1. Longest Common Substring 2. Longest Common Subsequence 이 문제는 2번이다. 1번은 가장 긴 공통..
3085: 사탕 게임
·
PS/BOJ
3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 풀이 #idea 0 ~ N - 1 까지의 가로, 세로에서 색깔 바꾸기 가능 각 행, 열에 가장 많은 연속된 글자 찾기 색깔 바꾸기는 한 번만 실행하므로 불필요한 반복을 줄이기 위해 전체 행, 열의 원래 연속 데이터를 확인 #구현방안 색깔 바꾸기 k 와 k + 1의 색깔이 같은 경우, 바꿀 수 없음 최대 연속 데이터 찾기 초기 데이터에서 최대 연속 데이터 먼저 확인 행에서 바꾸면 해당 행과 바뀐 데이터의 열의 최대 연속 데이터 확인 열에서 바꾸면 해당 열과 바뀐 데이터의 행의 최대 연속 데이터 확인 using System; class program { static int N, co..
6064: 카잉 달력
·
PS/BOJ
6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 풀이 #idea 마지막 해는 M과 N의 최소공배수다. 현재 해를 K라고 할 때, K = M * a + x = N * b + y 부정방정식의 최소 해 #구현 방안 M과 N의 최소공배수 구하기 1~200까지의 소수 데이터를 만들어놓고 공통인수 찾기 두 수 중 작은 수를 n배 하며 같은 수가 나올 때까지 반복하기 부정방정식의 최소 해 구하기 초기 값 지정 a, b = 0 M * a + x 와 N * b + y 중 작은 쪽부터 a나 b를 1씩 증가시키기 M * a + x ..
1107: 리모컨 [틀렸습니다.]
·
PS/BOJ
1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net 풀이 #case 숫자 버튼 없이 +, - 버튼으로만 이동하는 경우 (채널을 바꾸지 않아도 되는 경우를 포함한다.) 누를 수 있는 버튼으로 이동하고자 하는 채널과 근사한 값들을 만들어 +, - 버튼으로 이동하는 경우 자릿수가 같은 숫자로 출발하는 경우 자릿수가 다른 숫자로 출발하는 경우 (예. 0, 1이 고장 났을 때 999에서 1000으로 이동) #구현 방안 1행 입력값과 100의 차 구하기 1행 입력값보다 큰 값으로 만들기 1행 입력값보다 작..
작성한 cs코드를 콘솔 exe실행 파일로 만들기
·
C#
교회에서 중고등부 아이들 대상으로 성경읽기를 진행중이다. 매주 진도를 확인하는데 이게 전체 학생 대상 권, 장 표시가 되도록 성경읽기표를 만들기에는 조금 무리가 있어 진도를 백분율로 나타내도록 하기로 했다. 문제는 이것을 매주 누군가 일일히 계산해내야 한다는 점. 그냥 코드를 짜버리기로 했다. 그렇게 작성된 장황한 코드. 이 코드를 실행하려면 난 vs를 켜면 되지만 전도사님은 이런 거 알려드리면 아마 머리가 아프시겠지. 그래서 실행파일을 만들어 드리기로 했다. 먼저 내가 작성한 코드의 경로를 찾는다. 주소표시줄을 클릭해서 경로 통째로 복사해준다. Developer Command Prompt를 실행한다. 디렉토리를 바꿔야한다. cd명령어를 쓰고 한칸 띄어서 경로를 그대로 복사한다. 그리고 엔터. 디렉토리가..
정규표현식
·
C#
1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 2671번: 잠수함식별 입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고 www.acmicpc.net Regex 기초 - C# 프로그래밍 배우기 (Learn C# Programming) Regular Expression (Regex 클래스) 흔히 복잡한 문자열 처리를 위해 Regular Expression을 ..
2659: 십자카드 문제
·
PS/BOJ
2659번: 십자카드 문제 입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다. www.acmicpc.net 에라토스테네스의 체를 생각하며 가장 작은 수부터 리스트에 추가하고 동시에 추가된 수들을 회전시켜 얻은 시계수가 아닌 수들은 걸러내는 방법을 적용했다. 1111을 가장 먼저 리스트에 추가하면 1111을 회전시켜 얻은 1111, 1111, 1111을 확인한다. 모두 같으므로 패스. 1112는 걸러지지 않았으므로 리스트에 추가한다. 1121, 1211, 2111을 제외한다. 이하 반복 입력된 수를 돌려 얻은 시계수가 리스트의 몇번째 항목인지만 확인해 출력하면 끝. using System; us..
얕은 복사와 깊은 복사
·
C#
배열이나 클래스 등 참조형식의 자료 구조들은 대충 등호로 값을 넣어주면 이게 겉으로는 잘 돌아가는 것 처럼 보이지만 사실 안에서 지들끼리 실시간 배끼기를 한다. int[] a = { 1, 2, 3, 4, 5 }; int[] b = new int[5]; b = a; b[0] = 10; foreach(int n in a) { Console.Write($"{n}, "); } Console.Write('\n'); foreach(int n in b) { Console.Write($"{n}, "); } // 결과 // 10, 2, 3, 4, 5 // 10, 2, 3, 4, 5 b = a를 해줬을 때 a의 값을 끌어오는 것이 아닌 a의 값이 저장된 메모리 상의 물리적 주소를 b에 담아오기 때문이다. a의 값을 바꾸든..
전라남도교육지원청
맞았습니다!!