Java
-
백준 2206, 14442Java/코딩테스트 2023. 8. 13. 22:44
------------------------- 사담 ------------------------- 이 문제는 CS 스터디에서 스터디원분이 추천해준 문제이다. 왜 추천해줬었는지 기억은 안 나지만...추천해준 것만 기억하고 일단 풀었다... 벽 부수고 이동하기 문제가 시리즈로 3인가 4까지 있었던거 같은데 일단 2까지는 풀었다. 처음 2206을 풀고 이해했다면 14442는 변수만 살짝 바꿔서 쉽게 풀수 있을 것이다. https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이..
-
-
백준 2228Java/코딩테스트 2023. 8. 10. 03:23
https://www.acmicpc.net/problem/2228 2228번: 구간 나누기 N(1 ≤ N ≤ 100)개의 수로 이루어진 1차원 배열이 있다. 이 배열에서 M(1 ≤ M ≤ ⌈(N/2)⌉)개의 구간을 선택해서, 구간에 속한 수들의 총 합이 최대가 되도록 하려 한다. 단, 다음의 조건들이 만족되 www.acmicpc.net 생각의 흐름.. 1. 처음엔 DFS 방식으로 구간 시작위치를 조합해서 구하려 했었다. 근데 다 생각해보니 답이 다르길래 뭐지 했는데 각 구간 길이가 다를 수도 있었다. 그래서 뭔가 이방식으로 풀어나가기가 애매했다. 2. 구글링을 했는데 DP를 사용하는걸 확인을 했다. 3. 좀 다른 분들 코드를 보다가, DP[ i ][ j ] 를 배열의 첫 번째 원소에서 i 번째 원소까지 ..
-
Java equals() vs hashCode()Java/이론&문법 2023. 8. 8. 19:43
급 tmi. intellij에서 cmd + option + b 누르면 docs 열 수 있음 # 1 equals()와 hashCode() 차이가 무엇일까요? 그리고 이 메소드들이 자바의 해시 컬렉션의 성능에 어떤 영향을 끼칠까요? equals()는 참조 변수의 값이 같은지 비교하는 메소드로, 재정의 되어있지 않다면 객체의 주소값을 비교하여 동일 객체인지 비교후 boolean 값을 리턴하는 메소드입니다. 대표적으로 String 클래스에 equals를 사용할 경우에는 주소값이 아닌 데이터 값을 비교하여 동일 여부를 판정합니다. (아래 코드 참고) hashCode()는 객체의 주소값을 이용하여 해싱 기법을 적용한 결과값을 리턴하는 메소드입니다. 자바의 해시 컬렉션은 동일 객체인지 판정할 때 hashCode() ..
-
백준 11000Java/코딩테스트 2023. 8. 8. 10:42
https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 그리디 알고리즘. 강의 시작 순서대로 담을 우선순위 큐 하나, 강의 끝나는 시간들만 담아둘 우선순위 큐 rooms하나 이렇게 정의했다. rooms에는 강의 끝나는 시간을 담아두고, rooms.peek(), 즉 가장 일찍 끝나는 강의실의 강의 종료 시점이 다음에 들어올 강의의 시작 시점보다 빠르거나 같은 경우에만 rooms.poll()을 수행하고, 새로 들어온 강의의 끝나는 시점을 다시 rooms에 넣으면 된다. 최종적으로 rooms의 사이즈가 ..
-
프로그래머스 구명보트, 조이스틱Java/코딩테스트 2023. 8. 7. 16:27
오래간만에 프로그래머스에서 문제를 풀었다. 아직도 감을 잘 못 잡고 있는(...) 그리디 문제 2문제 풀어본 내용 정리. 그리디가 시중에 판매되는 알고리즘 책들 보면 꽤 앞쪽에 나와있는데... 난 그리디를 왜이렇게 못하는...? 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 여기서 아무 생각이 없이 풀다가 놓쳤는데, 무조건 보트엔 2명밖에 못 탄다. 그러므로 가장 무거운 사람 + 가장 가벼운 사람 조합으로 가야 한다...이걸 생각..
-
백준 15486, 14658Java/코딩테스트 2023. 8. 2. 02:50
https://www.acmicpc.net/problem/15486 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net - 이전에 퇴사 문제(14501, 퇴사1, 실버3) 를 풀었었어서 쉽게 푼 동적계획법 문제 - DP[i] 를 i번째 날부터 퇴사날까지 얻을 수 있는 최대 이익으로 생각하고 배열을 역순으로 계산해나가면 된다. - 참고로 퇴사 날부터 거슬러서 계산을 해줘서 일부러 DP배열 사이즈를 한 칸 더 선언해뒀다. - 각 상담별로 소요 기간을 보면서 퇴사전에 끝난 경우 / 퇴사 전..
-
백준 1027, 14502Java/코딩테스트 2023. 7. 30. 19:01
https://www.acmicpc.net/problem/1027 1027번: 고층 건물 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작) www.acmicpc.net - 기울기 계산하는 공식이 필요한 문제 - 처음에는 오른쪽 왼쪽 다 계산하게끔 만들었는데, 그럴 필요 없이 그냥 한 방향으로 쭉 탐색할 수 있었다. - 일단 이웃하는 애는 무조건 보이고, 내 쪽에서 보인다는 뜻은 반대편에서도 내 쪽이 보인다는 뜻이므로 한 방향으로 탐색할 때 양쪽을 같이 증가시켜주면 된다. 이 문제는 진짜 ... 계속 뭐가 안 되는건지 원인을 잘 못찾아서 푸는데 오래 걸렸던 문제이..