목록분류 전체보기 (95)
in.add()
Hash Function 해시함수(hash function)란 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 이때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing)라고 한다. Hash Table 해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 색인(index) 혹은 주소 삼아 데이터의 값(value)을 키와 함께 저장하는 자료구조를 해시 테이블(hash table)이라고 한다. 이때 데이터가 저장되는 곳을 버킷(bucket) 또는 슬롯(slot)이라고 한다. 이런 형식으로 데이터를 저장하면 Key에 해당하는 Value를 찾기 위해 해시 함수를 1번만 수행..
문제 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 해결 방법 우선 끝나는 시간이 빠른 순서로 정렬했다. 끝나는 시간이 같다면 빨리 시작하는 회의가 우선이다. 처음부터 보면서 끝난 시간을 last 변수에 넣고 그 이후에 시작하는 회의가 있다면 last를 갱신해준다. 갱신할 때 answer++ import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int..
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXQsLWKd5cDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 해결 방법 학생마다 자신보다 큰, 작은 학생을 저장하는 HashSet을 가지며 입력을 받을 때 넣어준다. 입력 후 compareHeight 함수로 '1번은 5번보다 키가 작고, 5번은 4번보다 작기 때문에, 1번은 4번보다 작게 된다.' 같은 경우를 처리해준다. 마지막에 학생마다 각 HashSet의 크기를 더한 값이 N-1(자신을 뺀 나머지 학생수)와 같다면 조건을 만족하는 학생..
문제 링크 : https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 문제 해결 방법 bfs와 비트마스킹을 사용하여 구현했다. keys 배열을 생각해내는데 오래 걸렸다. "abcdef" 키 에서 a 키를 갖고 있다면 000001 a, d키를 갖고 있다면 001001로 비트마스킹 처리한 값을 keys 배열의 세 번째 index 값으로 접근한다. package com.BOJ; import java.util.LinkedList..
String, StringBuffer, StringBuilder Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없다. 그러나 연산 횟수가 많아지거나 멀티스레드, Race condition(경쟁 상태) 등의 상황이 자주 발생한다면, 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 한다. String vs StringBuffer/StringBuilder String은 immutable(불변)하고 StringBuffer, StringBuilder는 mutable(가변)하다. String 클래스는 StringBuffer 클래스나 S..
문제 링크 : https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 해결 방법 bfs를 사용해서 구현했다. 2%쯤에서 실패가 떴는데, N == K 일 때 바로 끝내도록 해서 통과할 수 있었다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int N, K, answer; sta..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 문제 해결 방법 이진 탐색으로 최대 몇 명이 건널 수 있는지 검사한다. mid값 수 만큼의 니니즈 친구들이 징검다리를 건넜을 때 더 이상 밟을 수 없는 돌의 개수가 k 개라면 실패. -> max 값을 줄여준다. k개 미만이라면 성공. -> min 값을 늘려준다. class Solution { public int solution(int[] stones, int k) { int answer = 0; int min = 1; int max = 200000000; whi..
CS 테스트 : 13:30 ~ 13:50 2차 코딩 테스트 : 14:15 ~ 19:00 CS 테스트는 난이도가 높지 않았던 거 같은데 나는 많이 헷갈렸다.. CS 기초가 탄탄하다면 무리 없었을 것 같다. 2차 코테는 REST API 호출 코드와 JSON parser 코드를 미리 준비했지만 api 구현하는데 너무 오래 걸렸다. api코드 완성 시간이 5:30 쯤.. 세시에 처음으로 리더보드를 봤는데 꽤 많은 사람이 제출을 했었다. 문제 이해하고 api 구현하는데 두 시간 정도만 쓰고, 한번 돌리는 데에 5~10분이 걸리기 때문에 테스트해보면서 로직 고치려면 최소 세 시간 정도는 알고리즘 구현에 써야 할 거 같다. 2차까지 올 거라고 생각도 못했는데 재미있고(?) 유익한 경험이었다. 운은 여기까지인 것 같고..