1. 문제https://www.acmicpc.net/problem/31589 2. 코드강한 맛 -> 약한 맛 : 맛을 느낄 수 없으므로, 약한 맛을 먹었을 때 맛은 0이다.약한 맛 -> 강한 맛 : 강한 맛을 먹었을 때, 그전에 먹었던 약한 맛과의 차이만큼 맛을 느낀다. 따라서 강한 맛을 먹으면 (강한 맛 - 약한 맛) 맛을 느낀다.가장 먼저 먹는 포도 주는 포도주의 맛 그대로 인정된다.따라서 먹은 포도주 맛의 최대합을 구하기 위해서는 첫 번째로 먹는 포도주는 가장 맛이 강한 걸로 먹야아 한다. 위 로직에 따라 아래 흐름으로 코드를 작성한다. 필자는 투 포인터를 사용하여 존재하는 포도주 중에서 가장 약한 맛과 가장 강한 맛을 구분하였다.처음으로 먹는 포도주의 맛은 그대로 저장된다. answer += ar..
1. 문제https://www.acmicpc.net/problem/5567 2. 오답 - 양방향 매핑을 해야 한다.입력 : 322 13 2출력:0정답:2 상근이의 학번은 1번이기 때문에, 위 입력에 따르면 1번과 연결된 번호가 없으므로 결혼식에 초대되는 사람이 없어야 한다. 그러나 문제에서 (2, 1)이라면 (1, 2)도 성립한다고 나와있기 때문에, 양방향 그래프로 생성해야 한다.public class Main { static List> nodes = new ArrayList(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStrea..
1. 요구사항이 추가되었다.Robot 클래스는 이름을 가지고 있다.public class Robot { private String name; public Robot(String name) { this.name = name; } public String getName() { return name; }} main()에서 로봇의 이름에 따라 다른 값을 출력하는 로직을 가지고 있다.public class Main { public static void main(String[] args) { Robot robot = new Robot("주먹 로봇"); if(robot.getName().equals("주먹 로봇")) { ..
1. 주어진 상황String 타입의 배열이 존재하고, String[] → int[]로 변환 후에 뺄셈 수행한다.계산되는 값에는 음수가 포함될 수 없다. 2. 현재 코드str 배열에는 음수가 포함 되어있다.음수 값이 저장되어 있는지 검증하는 코드가 없다.public class Main { public static void main(String[] args) { String[] str = {"-1", "1", "3"}; int[] numbers = convertIntArray(str); int result = calculate(numbers); System.out.println(result); } private static int calcul..
1. Redis란?Redis는 Key:Value 구조의 비정형 데이터를 저장하고 관리하는 비관계형 데이터베이스이다. 데이터를 디스크가 아닌 메모리에 저장하므로 인메모리 DB(In-Memory DB)라고 부른다. 2. 데이터베이스가 있는데, 왜 Redis를 사용할까?데이터베이스가 있음에도 Redis를 사용하는 이유는 CPU가 계산에 필요한 데이터를 얻기 위한 속도 차이가 발생하기 때문이다. 데이터베이스는 물리 디스크에 직접 데이터를 쓰기 때문에 서버에 장애가 발생하더라도 데이터가 손실되지 않는다. 그러나 데이터가 필요할 때마다 매번 디스크에 접근하게 되면 사용자가 많아질수록 데이터베이스에 부하가 발생하게 된다. 따라서 사용자가 많을 때 데이터베이스의 과부하를 줄이기 위해서 Redis와 같은 캐시 서버를 도..