전체 글

개발 공부를 시작하면서 많은 개발자들의 회고글을 봤다. 나도 무언가 열심히 해서 회고를 작성해봐야겠다!라고 생각만 하고 있다가 첫 회고글을 작성해보려 한다. 1. 전기공학과에서 컴퓨터학부로 올해 상반기에서 가장 큰일은 복학과 전과일 것이다. 원래 나는 무언가 만드는 게 좋아서 기계공학과를 가려했지만,, 그러지 못하고 전기공학과를 들어갔다. 하지만 전기과에서 흥미를 붙이지 못했다. 흥미도 생기지 않고 그냥 시간을 보냈던 거 같다. 그러다 군대를 갔다 오고 복학하고 싶은 생각이 들지 않아 무작정 일을 시작하였다. 일을 한지 몇 달이 지나서 회사의 MES(생산 관리 시스템)라는 프로그램 만드는 걸 보게 되었다. 그동안 아무 생각 없이 쓰던 회사 프로그램이었지만 새로운 버전을 만들기 위해 프로그래밍하는 모습을 ..
문제 풀이 각자리 숫자의 갯수를 배열에 저장한뒤 Math.max를 이용해 최대값을 찾아낼껀데 6,9는 같이 쓰일 수 있으므로 두개의 수는 더해서 계산한다. 1~2는 1세트 3~4는 2세트므로 6,9의 자리수를 더한걸 2.0 double 값으로 나눈뒤 반올림하여 비교하여 최대값을 찾아낸다. 소스 import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int value = Integer.parseInt(br.readLine()); int[] ints = new int[10..
자동차 브랜드 목록을 갖고 있는 Enum 클래스가 있다. Car는 Brand와 최고 속도를 필드 변수로 갖고 있고 public enum Brand { Audi, BMW, KIA; Brand() { } } public class Car { private final Brand brand; private final int maxSpeed; public Car(Brand brand, int maxSpeed) { this.brand = brand; this.maxSpeed = maxSpeed; } public Brand getBrand() { return this.brand; } public int getSpeed() { return this.maxSpeed; } } 자동차 브랜드 목록을 갖고 있는 Enum 클래..
문제 풀이 배열에 미리 월 별 일수를 초기회해둔다. 그리고 1월부터 x - 1 월까지 모든 월의 일수를 더하고 입력받은 y 더해 총 일수를 구합니다. 1월 1일이 월요일이므로 총 일수를 7로 나눈 나머지로 요일을 출력해줍니다. import java.io.*; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int month = Int..
HTTP 웹 브라우저 주소 입력란에 URL을 입력했을 때 어떻게 해서 웹 페이지가 보일까? 브라우저 주소 입력란에 URL을 입력하면 어떤 방식인지 모르더라도 문제없이 웹 페이지를 볼 수 있습니다. 브라우저 주소 입력란에 URL을 입력하면 어디선가 응답이 돌아오며 원하는 페이지가 돌아오는 것을 알고 있습니다. 웹 브라우저는 웹 브라우저 주소 입력란에 지정된 URL에 의지해서 웹 서버로부터 리소스라고 불리는 파일 등의 정보를 얻고 있는 것입니다. 이때, 서버에 의뢰를 하는 것을 클라이언트라고 부르고 클라이언트에서 서버까지 흐름을 결정하는 것을 웹에서 HTTP(HyperText Transfer protocol)이라고 부릅니다. HTTP1.0과 HTTP1.1 HTTP1.0이 정식 사양으로 공개된 것은 1996년..
문제 풀이 임의의 수열이 주어지고 이중 한 개 이상의 연속된 수를 선택해 큰 수를 만드는 문제이다. 메모리제이션을 이용하면 어렵지 않게 풀 수 있다. 일반적으로 제일 큰수를 만든다고 생각하면 -가 붙은 수를 제외하여 더하겠지만 예제 2같은 경우에 3,4,-4,6,5 가 되어 14라는 제일 큰수를 만들수있다. 이경우 -4가 앞에 3,4를 더한 값보다 작기때문에 -4까지 더한 값이 큰값이되는것이다. 즉, 큰수는 음수 양수 상관없이 연속으로 선택한 값중 제일 큰 값를 찾으면 되는 것이다. 즉, 메모이제이션은 이전까지 탐색했던 값과 현재 위치의 값을 비교하여 큰 값을 저장하면 되는 것이다. import java.io.*; import java.util.*; class Main { public static voi..
문제 풀이 부분수열은 자기자신의 값도 포함되기 때문에 최소 길이 값은 1로 초기화한다. 그리고 첫번째 값부터 반복문을 통해 바로 이전 값과 비교해 현재값이 크다면 현재 dp[] 에서 제일큰 값의 +1를 해주고 작다면 초기화된 값을 갖도록 했다. 문제에서는 가장 긴 수열이라고 주어졋기 때문에 따로 값을 넣어주진 않았다. import java.io.*; import java.util.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLi..
문제 풀이 이 문제는 동적 계획법을 이용하여 풀었다. 이유는 2x1, 2x2를 이용하여 더 큰 타일의 경우의 수를 생각할 수 있다고 생각했고 최적 부분 구조로 바텀업 방식을 이용해서 풀 수 있을 거라고 생각했다. 우선 점화식을 세워보기 위해 직접 그려봤는데 이러한 경우의 수가 나왔다. 1,2,3,5 순으로 늘어나며 피보나치 수를 구하는 것과 비슷하다는 생각이 들었다 2x5는 직접 그려보면 알 수 있듯이 8개가 나온다. 이 결과를 갖고 점화식을 세워 보면 dp [n]=dp [n−1]+dp [n−2]라는 식을 세워 볼 수 있고 이 식으로 구현하여 문제를 풀 수 있었다. import java.io.*; class Main{ public static void main(String[] args) throws IO..
E@st
학습 기록