분류 전체보기 24

[백준/C#]15700번: 타일 채우기 4

[풀이] 2x1, 2x1의 총 넓이가 2인 타일을 채우려고 하기 때문에 벽의 가로와 세로를 곱한 값에 2를 나누면 채울 수 있는 타일의 최댓값을 출력할 수 있다.그런데, 하나 주의해야 할 점이 있다.입력값에 최대 1,000,000,000의 숫자가 들어가기 때문에 아무 생각없이 int로 계산해서 값을 구하면 틀린다.long을 사용해서 값을 구하도록 하자. [답]using System;class Program{ static void Main() { string input = Console.ReadLine(); string[] nums = input.Split(" "); long i = long.Parse(nums[0]); long j..

[백준/C#]2562번: 최댓값

[풀이] 먼저 배열, 정수 2개를 선언했다.그 다음 첫번째 for문을 통해 배열로 9개의 수를 저장하고, 두 번째 for문 속 if문을 통해 만약 지금의 수가 더 크다면 선언한 정수 2개 중 하나에 저장했다. 그리고 남은 하나의 정수는 인덱스값+1을 저장했다. 이 문제 보자마자 무난하게 풀었다고 생각했는데, 자꾸 콘솔창에서 실행시켜보니 최대값이 0이라고 나와서 뭐지? 했었다.알고보니 max = num[i]여야 할 거를 num[i] = max로 잘못 적었더라......이런 사소해보이는 실수 하나로도 결과가 크게 달라지니까 앞으로 더 꼼꼼하게 코드를 짜야겠다. [답]using System;class Program{ static void Main() { int[] nums = new i..

[백준/C#]31403번: A + B - C

[풀이] a, b, c를 string 값으로 저장한 다음 a, b, c를 int값으로 변환시킨 i, j, k를 만들었다.그리고 두번째 줄의 출력을 위해서 n이라는 변수에 a + b의 문자열을 합한 걸 int값으로 변환시켜서 저장했다.그 다음 첫째 줄에는 i + j - k, 두번째 줄에는 n - k를 출력했다. [답]using System;class Program{ static void Main() { string a = Console.ReadLine(); string b = Console.ReadLine(); string c = Console.ReadLine(); int i = int.Parse(a); int j = int.Pars..

[백준/C#]2884번: 알람 시계

[풀이] H와 M을 각각 i와 j로 받은 다음에, if문을 돌려서 만약 j가 45보다 크다면 i + " " + (j - 45)를 출력해줬고, 그렇지 않다면 또 if문을 돌려서 i가 0보다 클 경우엔 (i - 1) + " " + (j + 60 - 45), 아닐 경우(i가 0일 경우)엔 (i = 23) + " " + (j + 60 - 45)을 출력해줬다.아마 해당 문제는 나처럼 푸는 경우가 비효율적으로 푸는 경우가 아닐까 싶다.이런 답도 있구나 하고 참고용으로만 보시길... [답]using System;class Program{ static void Main() { string input = Console.ReadLine(); string[] nums = input.Spl..

[백준/C#]10871번: X보다 작은 수

[풀이] 우선, 정수 X의 값이 필요하기 때문에 input 변수와 num 배열에 받은 값을 저장한 뒤 int x 변수에 X의 값을 저장했다.그리고 두번째 줄에 주어지는 수열 A를 string으로 받은 뒤에 int 배열로 변환시켜서 num3 배열에 저장했고, for문을 통해 배열 num3을 차례차례 돌도록 했다.그 다음 마지막으로 if문을 사용해서 차례대로 방문한 배열의 숫자가 x보다 작을 시에 그 숫자와 공백을 함께 출력하도록 만들었다. [답]using System;class Program{ static void Main() { string input = Console.ReadLine(); string[] num = input.Split(" "); int ..

[백준/C#]15232번: Rectangles

[풀이] 숫자 R과 C를 입력받은다음에 R의 줄만큼 C의 수대로 별의 개수를 출력하면 되는 문제이다.중첩 for문을 활용해서 바깥쪽 for문에 R의 수만큼 돌아가게 하고, 안쪽 for문에는 C의 수만큼 별을 출력하게끔 만들었다. [답]using System;class Program{ static void Main() { int r = int.Parse(Console.ReadLine()); int c = int.Parse(Console.ReadLine()); for (int i = 1; i

[백준/C#]2439번: 별 찍기 - 2

[풀이] 우선 숫자 N을 line이라는 변수에 저장했다.그리고 중첩 for문을 돌리는데, for문 안에 for문을 각각 2개로 만든 다음, 하나는 공백(별이 오른쪽으로 정렬되어야 하기 때문), 다른 하나는 별을 N개씩 출력하도록 만들었다.공백의 경우 첫번째 줄에는 N-1개, 2번째 줄에는 N-2개, 3번째 줄에는 N-3개... 와 같은 개수가 필요하므로 공백의 갯수를 결정할 line - i 를 for문의 조건에 넣었고, 별의 경우에는 1개부터 시작해서 다음 줄로 갈 때마다 하나씩 늘어가는 형태이므로 별 찍기 - 1번의 문제처럼 차례대로 별의 개수가 늘어나도록 for문을 만들었다. [답]using System;class Program{ static void Main() { int l..