반응형

분류 전체보기 209

자바 11. 배열-2

배열에 대해서 이어서 알아보도록 하겠습니다. 다차원 배열 우리가 지금까지 보았던 배열은 모두 '1차원 배열'이라고 부르는 것들입니다. 복수의 자료형을 메모리 공간상에 선형, 즉 1차원으로 잡혀있기 때문에 이처럼 부르는 것입니다. 자바에서는 1차원 배열 외에도 2차원 이상의 배열도 사용할 수 있도록 허용하고 있습니다. 물론 메모리 공간에서는 동일하게 연속적인 공간일 뿐이고, 편의상 이처럼 부르는 것입니다. 이렇게 2차원 이상의 배열들을 다차원 배열이라고 이야기하는데, 다차원 배열들은 각각 자신보다 한 단계 아래 차원의 배열들을 요소로 하는 배열입니다. 예를 들어 2차원 배열은 1차원 배열들을 각 요소로 가지며, 3차원 배열들은 1차원 배열을 각 요소로 하는 2차원 배열을 요소로 가지게 됩니다. 즉 '배열의..

백준 2529번. 부등호 (C언어)

백준 2529번 부등호 문제입니다. 자세한 문제내용은 글을 읽어보시길 바랍니다. www.acmicpc.net/problem/2529 접근방법 처음 문제를 풀려고 할 땐 딱히 떠오르는 방법이 없어서 매우 고민했던 문제입니다. 각 부등호의 개수에 따라서 최대값, 최대값을 정해서.. 어쩌고 저쩌고 생각을 많이 해봤는데, 답이 잘 안나와서 일단 문제를 다시 차분히 읽어봤습니다. 그랬더니 문제에서 부등호 k의 범위가 최대 9까지라고 했고, 즉 숫자는 최대 10개이기 때문에 모든 경우의 수를 다 검사하는 완전탐색으로 풀리지 않을까 생각했습니다. int main() { int k, i; scanf("%d", &k); for (i = 0; i 0) { strcpy(min, copy); } } } } for (int i..

백준 2020.08.14

자바 10. 배열-1

이번 글에서는 배열에 대해서 알아보도록 하겠습니다. 배열이란? 배열이라는 것은 특정한 자료형의 여러 변수들을 하나의 묶음으로 다루는것을 이야기합니다. 만약 여러분이 숫자 5개를 저장해야된다면 변수를 어떻게 선언하실건가요? public class example{ public static void main(String[] args){ int n1, n2, n3, n4, n5; } } 숫자의 개수가 5개인 경우엔 위와 같이 별 어려움 없이 해결할 수 있습니다. 하지만 이런때 늘 나오는 이야기로, 저장할 숫자가 100개, 1000개, 혹은 10만개라면? 이런 경우엔 위와 같은 방법으론 해결할 수 없으실겁니다. 이때 배열을 사용하면 이를 손쉽게 다룰 수 있습니다. 배열의 기본 형식은 다음과 같습니다. 자료형[] ..

백준 1049번. 기타줄 (C언어)

백준 1049번 기타줄 문제입니다. 자세한 문제내용은 글을 읽어보시길 바랍니다. https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 접근방법 해당 문제같은 경우 예제의 입력과 출력을 잘 보면 매우 간단하게 풀어낼 수 있는 문제입니다. 보통 이런 문제의 경우 묶음과 낱개를 함께 구매해야 한다고 생각할 수 있는데, 예제를 보면 묶음과 낱개를 따로따로 구매할 수 있습니다. 따라서 묶음 중 최소 가격, 낱개 중 최소 가격을 구한 뒤, 필요한 기타줄을 ..

백준 2020.08.13

자바 9. 반복문

이번 글에선 반복문에 대해서 알아보도록 합시다. 프로그래밍 언어에서 반복문은 조건문과 마찬가지로 정말 필수적인 요소입니다. 만약 여러분이 특정한 데이터, 또는 문자열을 여러번 출력하려면 어떻게 하실 건가요? public class example{ public static void main(String[] args){ System.out.print("자바 9. 반복문"); System.out.print("자바 9. 반복문"); System.out.print("자바 9. 반복문"); System.out.print("자바 9. 반복문"); System.out.print("자바 9. 반복문"); } } 당장은 이렇게 하면 원하는 문자열을 5번 출력할 수 있을 것입니다. 하지만 이것이 5번이 아닌 100번, 10..

백준 10610번. 30 (C언어)

백준 10610번 30 문제입니다. 자세한 문제 내용은 글을 읽어보시기 바랍니다. https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶� www.acmicpc.net 접근방법 솔직히 이 문제의 경우 어떻게 시작해야 될지 처음에 막막했습니다. 가장 먼저 생각한 것은 일단 0이 없으면 30의 배수를 절대 만들 수 없으니 입력받은 숫자에서 0이 없다면 바로 -1을 반환하고 종료하는 것부터 시작했습니다. 다음으로 생각해본 것은 최대값을 어떻게 만드느냐 인데, 30의 배수인지 판단하는 ..

백준 2020.08.12

자바 8. 조건문

이번 글에선 조건문에 대해서 알아보도록 합시다. 조건문은 특정한 조건에 대해서 그 조건이 true, false인지에 따라 각각 다른 동작을 하도록 해주는 문법입니다. 조건문은 조건식과 실행할 코드를 포함하는 블럭{}으로 구성되어 있습니다. if문 if문은 가장 일반적으로 사용되는 조건문이며 기본 구조는 다음과 같습니다. if(조건식){ 실행코드 } 위와 같이 사용하면 조건식이 true일 때 블럭 내의 코드를 실행합니다. 이때 실행할 코드가 한 줄이라면, {}를 생략할 수 있습니다. 다음으로 이 조건이 false일 때 코드를 실행하는 법을 살펴봅시다. if(조건식){ 실행코드 }else{ 실행코드2 } 위와 같이 사용하면 조건식이 false일 때는 else뒤의 블럭에 있는 코드가 실행됩니다. 마찬가지로 코..

백준 1541번. 잃어버린 괄호 (C언어)

백준 1541번 잃어버린 괄호 문제입니다. 자세한 내용은 문제를 읽어보시길 바랍니다. https://www.acmicpc.net/problem/1541 접근방법 문제 자체는 별로 어렵지 않은데, 이상한 곳에서 좀 시간을 잡아먹었던 문제입니다. 먼저, 이 문제는 계산식을 문자열로 입력받아서 괄호를 사용해 가장 낮은 결과를 얻는 문제입니다. 문자열 자체는 저희가 임의로 설정하는 것이기 때문에 문자열을 수정할 필요는 없습니다. 해결법은 간단하게 최초의 -가 나올 때까지 모든 수를 결과에 더해주고, -가 나온 이후의 숫자를 모두 빼주시면 해결 가능합니다. 예를 들어 55-50+40-90+58-54과 같은 수식이 있을 때, - 이후의 모든 식은 55-(50+40)-(90+58)-54와 같이 바꿀 수 있습니다. 그..

백준 2020.08.11

자바 7. 연산자-2

비교 연산자 1. 대소 비교 연산자 , = 이 네가지 연산자의 경우 따로 설명할 필요 없을 거라 생각합니다. 여러분이 수학에서 사용하던 비교연산자와 동일한 동작을 수행하고, 결괏값은 boolean형 입니다. 주의할 점은 기본형에선 boolean외에 모든 자료형에 사용할 수 있지만, 참조형에는 사용할 수 없습니다. public class example{ public static void main(String[] args){ int a = 10; int b = 20; System.out.print(a > b); } } 2. 등가비교 연산자 ==, != 이 두 연산자의 경우 두 피연산자의 값이 같은지, 같지 않은지 비교하는 연산자인데, 수학에서는 두 수가 같을 경우 =을 사용하지만 자바에서 =는 이미 대입 연..

백준1931번. 회의실배정(C언어)

백준 알고리즘 1931번 회의실 배정 문제입니다. 자세한 문제는 사진을 읽어보시기 바랍니다. https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 접근방법 일단 기본적인 접근방법을 몇 가지 생각해봅시다. 회의를 특정한 순서로 정렬한 뒤, for문을 사용해 각 요소가 조건에 맞으면 카운트를 증가시킨다. 먼저 이런 방법을 생각해봤는데, 그럼 어떻게 이를 정렬해야 할까요? 먼저 중점적으로 생각할 부분은 시간이기 때문에, 시작시간, 소요시간, 종료시간으로 생각해봅시다. 단순히 생각했을 때, 시작시간 중심으로 정렬하면 간단할 것 같습니다. 하지만 아무리 빨리 시작해도 소요시간..

백준 2020.08.10
반응형