문제차량의 입출차 기록을 통해 차량별 주차요금을 계산하는 문제이다.주차요금은 요금표를 기준으로 기본 시간에 대한 기본 요금을 부여하고 초과한 경우 단위 시간당 당위 요금이 추가된다.초과한 시간이 단위 시간으로 나누어 떨어지지 않는다면 올림으로 계산한다.풀이입차와 출차가 겹치는 경우가 없고, 입차와 출차 순서가 뒤집히는 경우도 없기 때문에 순차적으로 계산하기만 하면 간단히 주차 시간을 계산할 수 있다.출차 시간에서 입차 시간을 뺀 값이 주차 시간임으로 총 주차 시간을 계산할 때 차량별로 입차 시간은 빼주고, 출차 시간은 더해주면 된다.출차 기록이 없는 경우에는 23:59분으로 가정하고 계산해야 한다.이때 차량의 주차 시간을 통해 출차 기록이 없다는 것을 판단할 수 있다.입차 시간이 00:00 일 때는 주차..
문제두 수열이 주어졌을 때 공통으로 갖는 부분 수열들 중 사전 순으로 가장 나중인 것을 구하는 문제이다. 여기서 부분 수열이란 것은 어떤 수열에서 원래 순서를 유지하면서 일부 원소를 선택하여 만들어진 새로운 수열을 말한다.풀이A, B 두 개의 수열이 주어졌을 때 공통되는 부분 수열을 구해야 한다. 따라서 set을 사용하여 A와 B 수열의 공통되는 숫자를 선별한다.만약 공통되는 숫자가 없다면 0을 출력하고 종료하면 된다.부분 수열들 중 사전 순으로 가장 나중인 것을 구하는 것이기 때문에, 공통 숫자들 중 가장 큰 숫자(max_val)를 뽑아 result에 담는다.부분 수열은 원래 수열의 순서를 유지하면서 선택돼야 하므로, A와 B 각각의 수열에서 max_val의 위치를 찾아 해당 위치 이후의 수열로 업데이..

문제인형 뽑기 게임을 진행하면서 몇 개의 인형이 사라졌는지 출력하는 문제이다.크레인이 작동한 위치에 따라 인형을 집어 올리고, 바구니(stack)로 이동하면서 인형이 연속되면 제거하여 사라진 인형 개수를 구한다.풀이2차원 배열과 스택을 활용해 문제를 풀 수 있다.크레인을 작동시킨다.move 위치에서 맨 위쪽부터 즉 row가 작은 순으로 탐색한다.인형이 있는 경우 인형 정보를 저장하고 board는 빈칸(0)으로 만든다.동일한 인형일 경우 인형을 제거한다.새로 뽑은 인형의 정보와 basket에 담긴 마지막 인형이 동일하다면 마지막 인형을 제거하고 count에 2를 더한다.만약 동일한 인형이 아니라면 뽑은 인형을 basket에 담는다.count 된 숫자를 return 한다.Python 코드def solutio..
문제문자열에 포함된 영단어를 숫자로 변환하는 과정을 구현하는 문제이다.예시) one4seveneight -> 1478풀이영단어 - 숫자 정보를 HashMap에 저장한다.for문을 통해 숫자 영단어를 순회하면서 replace 메서드를 사용해 숫자로 치환한다.최종적으로 치환된 문자열을 숫자로 변환하여 결과를 반환한다.Java 코드import java.util.HashMap;import java.util.Map;class Solution { public int solution(String s) { // 영단어-숫자 HashMap Map numMap = new HashMap(); numMap.put("zero", "0"); numMap.put("one", ..
반복문은 말 그대로 특정 코드를 여러 번 반복 실행할 수 있게 만드는 것을 말한다.그렇기에 상황에 맞는 적절한 반복문을 선택하면 효율적인 코드를 작성할 수 있다.이번 글에서는 Java의 주요 반복문인 for문, while문, 그리고 do-while문에 대해 알아보자.1. for문for문은 반복 횟수가 명확할 때 사용한다.초기화, 조건식, 증감식을 한 줄에 작성해 반복 횟수를 제어할 수 있다.for (초기화; 조건식; 증감식) { //반복할 코드}초기화: 반복 제어 변수를 선언하거나 초기화하는 부분이다.조건식: 반복을 계속할지 여부를 결정하는 조건이다. 이 조건이 true일 때만 반복한다.증감식: 각 반복이 끝날 때마다 실행되어 반복 제어 변수를 증감시킨다.// 예시for (int i = 0; i 위..

Python 언어에 익숙한 개발자라면, Java에서 문자열을 비교할 때 예상치 못한 결과를 마주할 수 있다.Python에서 문자열을 비교하는 경우 == 연산자만 사용해도 문제가 없다.하지만 Java에서는 같은 문자열을 비교하더라도 == 연산자를 사용하면 false를 반환하는 경우가 있다.그 이유를 알기 위해서는 먼저 Java의 메모리 모델을 이해해야 한다. Java 메모리 모델Java에서 문자열이 메모리에 저장되는 방식을 이해하면 문자열 비교 방법을 이해하는데 도움이 된다.문자열 리터럴: 문자열 리터럴은 String Pool에 저장되며, 컴파일 시점에 동일한 값이라면 같은 메모리 주소를 공유한다.new 키워드로 생성된 문자열: new 키워드를 사용해 생성한 문자열은 Heap에 저장되며, 동일한 값을 가진..
개발을 하다 보면 두 개의 코드를 비교해야 하는 경우가 생긴다.이런 상황에서 보다 쉽게 코드를 비교할 수 있도록 도와주는 사이트가 있다. 1. Diff Checker원본을 왼쪽 빈칸에 넣고, 수정본을 오른쪽 빈칸에 넣는다.하단의 초록색 Find difference 버튼을 누르면 코드를 비교할 수 있다. 코드 비교 결과는 위의 이미지에서 보이는 것처럼 원본의 어떤 내용이 삭제되고 추가되었는지 표시된다.Highlight Change의 Word 버전은 단어 단위로 변경된 부분을 블록으로 표시하며, Character 버전은 스펠링 하나하나를 비교하여 변화를 나타낸다.Syntax Highlighting을 통해 각 언어별 코드를 더 명확히 확인할 수 있다.기타 Tool 기능으로는 공백을 제거하는 등의 간단한 작업을..