목표 이전 포스팅에서 진행한 MyTimer 프로젝트의 문제점을 찾고 이를 해결해 개선된 프로그램을 작성합니다. 추가로, 특정 상황에서만 잠깐 사용하는 일회용 타이머를 작성해보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 이전 프로그램의 문제점과 해결 방안 일회용 타이머 만들기 정리 개요 이전 포스팅에서 윈도우에 현재 시간을 출력하는 프로그램을 제작했습니다. 시간은 정상적으로 출력되나, 실행하면 바로 뜨지 않고 1초 후에 뜨고, 화면이 깜빡거리는 문제점이 있었습니다. 이 문제를 해결하면서 일정 시간이 되면 알람이 울리는 프로그램을 작성해보도록 하겠습니다. 추가로, 일정 시간 동안안만 메세지를 띄우는 것도 한 번 해보도록 하겠습니다. 이전 프로그램의 문제점과 해결 방안 이전 포스팅에서 진행한 현재..
문제 백준 1461번 최소한의 걸음으로 책을 되돌려놓는 문제를 해결했습니다. https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 문제 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책들의 원래 위치가 주어질 때, 책을 모두 제자리에 놔둘 때 드는 최소 걸음 수를 계산하는 프로그램을 작성하시오. 세준이는 한 걸음에..
문제 백준 2812번 주어진 숫자에서 K개의 숫자를 없앴을 때 가장 큰 수를 만드는 문제를 해결했습니다. 문제 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. 예시: 7 3 1231234 출력 입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다. 예시: 3234 풀이 과정 그리디 알고리즘으로 해결할 수 있는 문제를 찾았기 때문에, 그리디 알고리즘으로 접근했습니다. 그리디 알고리즘이란, 현재 선택할 수 있는 가장 최적의 선택을 하는 것입니다. 당장은 최적의 선택일 수 ..
문제 백준 1662번 압축된 문자열의 길이를 찾는 문제를 해결했습니다. https://www.acmicpc.net/problem/1662 1662번: 압축 압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이 www.acmicpc.net 문제 압축되지 않은 문자열 S가 주어졌을 때, 이 문자열중 어떤 부분 문자열은 K(Q)와 같이 압축 할 수 있다. K는 한자리 정수이고, Q는 0자리 이상의 문자열이다. 이 Q라는 문자열이 K번 반복된다는 뜻이다. 압축된 문자열이 주어졌을 때, 이 문자열을 다시 압축을 푸는 프로그램을 작성하시오. 입력 첫째 줄에 압축된 ..
문제 백준의 1024번 수열의 합을 찾는 문제를 해결했습니다. https://www.acmicpc.net/problem/1024 1024번: 수열의 합 첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다. www.acmicpc.net 문제 N과 L이 주어질 때, 합이 N이면서, 길이가 적어도 L인 가장 짧은 연속된 음이 아닌 정수 리스트를 구하는 프로그램을 작성하시오. 입력 만약 리스트의 길이가 100보다 작거나 같으면, 연속된 수를 첫째 줄에 공백으로 구분하여 출력한다. 만약 길이가 100보다 크거나 그러한 수열이 없을 때는 -1을 출력한다. 예시: 18 2 출력 만약 리스트의 길이가 100보다 작거나 ..
목표 타이머에 대해 이해하고, 타이머를 활용해 다양한 작업을 하는 방법에 대해서 배워보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 타이머 설치와 제거 타이머를 활용해 시계 만들기 정리 개요 이전 포스팅에서 Win32 API를 활용해 입, 출력을 하는 것에 대해 배웠습니다. 텍스트, 도형 등을 출력하고, 마우스 클릭을 통해 그림을 그리는 프로그램을 작성했습니다. 코드는 순차적으로 진행되기 때문에, 이러한 동작들은 개발자가 의도한 순서에 의해 동작하는 코드들이었습니다. 이번 포스팅에서는 타이머를 통해 일정 시간마다 메세지 혹은 함수를 호출해 동작하는 것에 대해서 배워보도록 하겠습니다. 타이머 설치와 제거 Win32 API의 장점 중 하나는 백그라운드 작업을 지원한다는 것입니다. 백그라운드 작업을..
문제 백준의 1064번 평행사변형의 둘레를 구하는 문제를 해결했습니다. https://www.acmicpc.net/problem/1064 1064번: 평행사변형 평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC) 이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나 www.acmicpc.net 문제 평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC) 이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나올 수도 있다. 만들어진 모든 사각형 중 가장 큰 둘레 길이와 가..
목표 Java에서 문자열(String)을 생성하는 방법과 문자열을 비교할 때 Equals() 메소드와 == 연산자의 차이점에 대해서 알아보겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 문자열 생성 문자열 비교 정리 개요 Spring 프레임워크를 배우기 위해 Java를 공부하고 있습니다. 부스트코스에서 egoing님의 강의를 듣고 있는데, 문자열을 비교할 때 == 대신 equals()를 사용해야 한다고 합니다. 안그래도 Java에서 String 객체를 기본적으로 지원해주는 것에 흥미를 느끼고 있었는데, 이때다 싶어서 문자열에 관한 내용에 대해서 자세히 찾아봤습니다. 기본적으로 문자열(String)은 Java의 최상위 클래스인 Object에 속해있는 String 클래스의 객체입니다. 이와 관련된 메소드를..