C# 백준 11051 이항 계수 2 (페르마의 소정리, 분할 정복 알고리즘)
·
PS/BOJ
11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net IDEA 이항 계수를 구하는 문제다. 간단한 다음 공식을 사용하면 바로 해결 가능하다. 그런데 여기서 간단하지 않은 것은 주어진 N의 최댓값이 1,000이다. 20!만 계산해도 long의 표현 범위를 넘어가버린다. 그래서 이 문제에도 분할 정복을 사용해야한다. 그리고 값을 10,007로 나눈 나머지를 출력해야한다. 연산을 모두 끝내고 한꺼번에 나머지를 출력하기엔 너무 큰 숫자를 처리하기 어려울 것 같다. 모듈러 연산을 이용하면 좋겠지만 나눗셈에 대한 모듈러 연산은 없다. 페르마의 소정리에 따르면 어떤 수 a가 정수이고 p가 소수일 때..
C# 백준 18291 비요뜨의 징검다리 건너기(분할 정복 알고리즘)
·
PS/BOJ
18291번: 비요뜨의 징검다리 건너기 강을 건너는 방법은, (1 → 4), (1 → 2 → 4), (1 → 3 → 4), (1 → 2 → 3 → 4)의 4가지이다. www.acmicpc.net IDEA 현재 위치에서 1~N까지의 범위 안에 자유롭게 이동이 가능하다. 브루트포스로 작성하는 것도 가능하겠지만 기상청 컴퓨터를 빌려써야 할 것 같다. N개의 징검다리가 있을 때, N이 1이라면 출발점과 도착점이 같은 것이기 때문에 경우의 수는 1이고 2 이상일 때부터 출발점과 도착점 사이의 징검다리들을 각각 밟을 것인지 건너 뛸 것인지 선택하는 것과 같다. N - 2 개의 징검다리 중 1개만 밟는 경우, 2개만 밟는 경우, 3개만 밟는 경우, ..., N - 3 개를 밟는 경우, N - 2개를 모두 밟는 경우를..
C# 백준 3197 백조의 호수(너비우선탐색)
·
PS/BOJ
3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net IDEA 만약 문제가 "얼음이 전부 녹는 데 걸리는 시간은?" 이었다면 정말 간단히 풀 수 있는 문제다. 이 문제의 함정은 얼음이 녹을 때마다 백조가 만날 수 있는지 없는지 여부를 확인한다는 것에 있다. 여기서 '매일 녹여보고 확인해보면 되지 않을까?' 생각했지만 호수의 범위가 가로 1~1500칸, 세로 1~1500칸이다. 만약 이 방법을 사용한다면 최대 225만칸을 확인해야하는데 무조건 시간초과가 나올 것이다. 다른 분들의 풀이를 ..
switch 문
·
C#
어떤 데이터의 값으로 여러 분기를 나누어야할 때 if문을 반복하는 것보다 더 간단한 방법이 switch문을 활용하는 것이다. switch(데이터) { case 값 : } 형태를 갖는다. using System; class program { static void Main() { int score = int.Parse(Console.ReadLine()); switch (score / 10) { // 입력된 score 값을 10으로 나눈 몫을 확인한다. case 10: Console.WriteLine("Perfect"); break; case 9: Console.WriteLine("Exellent"); break; case 8: Console.WriteLine("Great"); break; case 7: Co..
if, while, for 문
·
C#
if문 조건을 지정하고 지정한 조건에 맞는 경우 코드를 실행한다. 여러가지 경우를 따로 지정할 수 있고, 조건에 맞는 경우와 그렇지 않은 경우, 이렇게 하나의 집합과 여집합으로 나누어 실행한다. 조건은 위에서 아래로 순차적으로 확인하기 때문에 다음 조건이 부분집합인 경우는 무시될 수도 있다. 여러 분기를 나누어야할 때는 조건의 순서를 잘 생각해서 구성해주어야한다. if문으로 조건을 나누다 보면 난잡하고 읽기 어려운 코드가 되기도 한다. 코드를 짜기 전에 조건을 먼저 잘 나누면 복잡한 if문을 간단하게 줄일 수도 있다. using System; public class Product { public string name; public int price; public Product(string Name, in..
자료형
·
C#
정수 자료형 자료형 설명 범위 크기 byte 부호 없는 정수 0~255 8bit sbyte 정수 -128~127 8bit short 정수 -32,768~32,767 16bit ushort 부호 없는 정수 0~65,535 16bit int 정수 -2,147,483,648~2,147,483,647 32bit uint 부호 없는 정수 0~4,294,967,295 32bit long 정수 -922,337,203,685,477,508~922,337,203,685,477,507 64bit ulong 부호 없는 정수 0~18,446,744,073,709,551,615 64bit char* 유니코드 문자 16bit *char 형식은 단일 문자를 정수 형태로 표현함 부동 소수점 형식 자료형 설명 범위 크기 float 단..
전라남도교육지원청
'c#' 태그의 글 목록 (3 Page)