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의 값을 바꾸든..
자료구조의 class
·
C#
여러 종류의 class가 있다. 이미 정의되어있는 클래스 라이브러리도 있고 여기에 개발자가 필요한 만큼의 기능을 더 추가하는 것도 가능하다. int, string처럼 자료구조를 새로 선언하는 것도 할 수 있다. 내가 circle 이라는 클래스를 선언하면 이 안에 원을 구성하는 데 필요한 두 가지의 요소를 넣어줄 수 있다. 중심의 위치 X, Y, Z, 원의 반지름 R, 원의 두께 T, 각 축과의 기울기 aX, aY, aZ 이런 식으로. 백준 문제 풀 때 좌표 값이나 그래프 등의 상태를 복잡하게 하나하나 따로 저장하기보다 클래스로 묶어 클래스를 인스턴스화 하는 것이 간편하다. public class Location { private int x, y; public Location(int X, int Y) { ..
Winform 자식폼으로부터 부모폼으로 데이터 보내기
·
C#
대화상자를 띄우고 필요한 정보를 입력받아 부모폼으로 불러와야하는 경우, event와 delegate 를 통해 데이터를 보낼 수 있다. // 자식폼 using System; namespace child { public class form2 { public delegate void DataHandler(string name, int number); public event DataHandler data_handler; public child() { InitializeComponent(); this.data_handler("name", 1); this.Close(); } } } // 부모폼 using System; namespace parent { public class form1 { public parent(..
StreamReader, StreamWriter / Graphics, Bitmap 클래스
·
C#
개발이라고 하기에 작은 프로젝트였지만 아무튼, 이번 프로젝트에서 처음 배웠는데 가장 많이 사용한 클래스가 두 가지였다. 첫 번째는 StreamReader, StreamWriter 클래스. csv 파일 불러오기와 저장하기에 쓰였다. 깃허브에서 얻어온 포켓몬 스트라이프의 파일명이 모두 영어였다. 영어를 한글로 번역하기 위해 파일명을 불러온 후에 단어 쌍을 csv 파일로 만들고 다시 불러와야했다. using System.IO; using System.Collections.Generic; Dictionary dict = new Dictionary(); StreamReader sr = new StreamReader(string path); string str = string.Empty; while((str = s..
포켓몬 픽셀아트 생성기 v2.02
·
C#
원하는 기능을 모두 구현하진 못했지만 일단 필요했던 기능은 모두 담아 완성했습니다. 1번부터 905번까지의 도감 번호를 기반으로 난수를 뽑습니다. 30배로 뽑히는 안농과 70배로 뽑히는 마휘핑은 이제 없습니다. 시리즈에 합류한 세대를 구분해 뽑을 수 있는 방식입니다. 모든 체크박스를 해제하면 뽑기 버튼이 사라집니다. 포켓몬의 세대 구분은 나무위키를 참조했습니다. 이로치 확률은 0.1%로 표기되어있지만 실제로는 5%입니다. 우측 상단의 콤보박스에서 폼체인지, 픽셀아트 난이도(색상 수)를 조절할 수 있습니다. 프린트 폼을 구현해보려 노력했지만 해상도를 맞추는데 어려움이 있었습니다. 그냥 이미지로 저장하도록 했습니다. 저장하기를 누르면 픽셀아트로 만들어 이미지를 저장합니다. 바탕화면에 저장 체크박스를 체크하면..
전라남도교육지원청
맞았습니다!!