Language
98

0509 영작 - used up (다 써버린, 고갈된, 소진된)
1
오늘의 단어 (used up = 다 써버린, 고갈된, 소진된)By 6pm I was completely used up mentally and physically.(6시쯤 되니까 정신적으로든 육체적으로든 완전히 소진되었어요.) we were almost used up our 2nd quarter budget, sir. so we should tighten our belt in next 2 weeks(저희 2분기 예산 거의 다 썼습니다. 상사님. 그러니까, 저희는 다음 2주 동안 허리띠를 졸라매어야 해요.) I always said you should buy papers more than enough. we are used up papers for print already. hey jake! can you ..
3주 전
Language > English

0507 영작 - Technically (엄밀히 말하면)
2
(technically, 엄밀히 말하면)technically, you are not allowed to do that without permission. I love your flexibility but If you just work with your instinct What's the use of rules if they'll be alway ignored?(엄밀히 따지면 너는 그것을 허가 없이 하면 안됐어. 난 니 융통성이 좋지만, 니가 본능만 믿고 일을 몰아붙이면, 규칙이 존재하는 이유가 뭐야?)technically, he is not work here anymore. he quited last week. I think he just come today to cover some run away pa..
3주 전
Language > English

[Java]map.compute()를 활용해, map 자료구조 쉽게 다루기
0. 들어가며HashMap 자료형을 사용하며 풀어야 했던 문제 중, compute를 쓸 일이 있었는데, 갑자기 해당 내용이 생각이 나지 않아서 다시 정리한다. HashMap의 compute는 putIfPresent, putIfAbsent 등을 전부 포괄하며 내가 하고 싶은 작업의 대부분을 할 수 있어서 편하다. 이번엔 compute에 대해 자세히 알아보겠다.1. 형태V compute(K key, BiFunction remappingFunction);// exmap.compute(key, (key,oldValue) -> {... return newValue});반환형: 반환형의 V는 현재 함수를 부른 Map의 value의 자료형을 뜻한다. 만약 HashMap 였다면 V는 Integer가 되는 형식이다.인수..
7주 전
Language > Java

[JAVA] ArrayList<Integer>에서 원하는 숫자 Value 지우기
0. 들어가며...해당 글은 ArrayList에서 원하는 숫자를 지우는 방법에 대한 글이다. ArrayList.remove() 함수로 지우면 되지 않겠냐 생각할 수 있지만 .remove(int i)를 넣으면, remove의 오버로딩된 함수 중 ArrayList.remove(int index)가 호출되어, i를 index로 가지는 Value를 ArrayList에서 삭제한다. 따라서 원래 의도한 'i라는 Value 지우기'는 실패한다.1. ArrayList.remove(int index)위에서 설명했듯이 remove에 원시 자료형 int를 넣으면 해당 인수를 index로 가지는 Value를 ArrayList에서 삭제한다.2. ArrayList.remove(Object o)우리가 실제 i라는 Value를 삭..
2025.01.25
Language > Java

[JAVA] Long보다 큰 수를 다루는 법
0. 들어가며개발을 하거나, 코딩테스트에서 정수론 관련 문제를 만나면 한 번씩 주어지는 입력의 크기가 Long형을 초월할 수 있을 때가 간혹 있다. 먼저 코테에서 자주 쓰이는 자료형인 int와 Long형의 최대, 최소값을 알아보자.정수형 타입데이터 표현 범위int-2,147,483,648 ~ 2,147,483,647 (1010)long-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (1018)long이 정말 많은 수의 범위를 커버할 수 있음에도 불구하고 백준의 거의 소수같은 문제는 이러한 자료형을 뛰어넘는다. 이때의 대처법 2가지를 설명하겠다.1. 실수 자료형인 Double 사용 Double은 64bit 부동 소수점으로 표현된 자료형으로..
2025.01.24
Language > Java

[JAVA] For 문 작동 순서
0. 정리하는 이유코테 문제를 풀다가 갑자기 순서가 헷갈렸다. 그래서 정리해놔야 겠다1. For 문 작동 순서1️⃣: 지역 변수 선언 및 초기화 (해당 부분이 For문 밖에 있어도 된다. 다만 그렇게 하면, for 문이 끝난 뒤에도 i 값이 유지된다.)2️⃣: 중앙의 조건 체크 (여기서 걸리면 for문 내용물에 들어가지 않고 바로 for 문이 끝난다.)3️⃣: 내용물 처리4️⃣: i 크기 올리기5️⃣: 다시 한 번 더 조건 체크
2025.01.24
Language > Java

[JAVA] 코딩테스트 중 실수하기 쉬운 StringBuilder의 생성자
0. 무엇을 정리하나요필자는 문자열을 뒤집는 기술이 필요할 때, StringBuilder클래스의 reverse()를 자주 활용한다. 근데, 펠린드롬 수를 빠르게 구하기 위해, 다음과 같이 문제를 푸니 틀리는 것 아닌가! StringBuilder straight = new StringBuilder(num);StringBuilder reverse = new StringBuilder(num).reverse();콘솔에 찍어보니 두 객체 모두에 어떠한 입력값도 들어가지 않았다! 코테에서 이러한 에러를 겪었으면 적잖이 당황했을 것 같다. 오늘은 필자와 같이 당황할 사람들을 위해, StringBuilder의 생성자에 int i를 넣는 것과 String str을 넣는 것의 차이를 알아보려 한다.1. ne..
2025.01.24
Language > Java

[Java] HashMap에서 Custom Class를 Key로 사용하는 방법, 그림으로 쉽게 이해하기
0. 알아볼 것1. Hash Map 이란? 형태의 데이터 쌍으로 이루어진 자료구조KEY를 활용해 HashMap에 VALUE을 (저장, 삭제, 조회) 하는데 평균 O(1)의 시간이 든다. 쌍을 ENTRY라고 부른다.KEY 값은 중복될 수 없고, VALUE 값은 KEY 값이 다르다면 중복저장이 가능하다.2. HashMap 내부 구조HashMap은 크게 HASH 함수와 Hash Bucket으로 이루어져 있다.Hash Bucket은 값을 저장하는 장소로 Array로 구현되어 있다.Hash 함수는 입력 값 마다의 Hash 값을 반환 하는데, 해당 Hash 값은 Hash Bucket의 Index이다. 따라서 Hash 함수는 입력 값이 저장될 위치를 알려주는 네비게이터 역할을 한다고 생각하면 되겠다.이제 실제 입력값..
2024.12.31
Language > Java

[Java] JSON 직렬화의 모든것
1. JSON 이란 무엇인가요? 💡(1) 정의JSON이란 JavaScript Object Notation의 약자로 Javascript 객체 형태로 되어있는 데이터 교환 양식이다.JS 객체의 형태 : javascript 객체는 (key: value) 형태의 값들이 나열된 구조이다. java에서 HashMap과 유사하다고 볼 수 있다. js에서는 따로 변수에 대한 타입 선언이 필요 없기 때문에 객체 문법이 비교적 간편하다.(2) 특징a. 언어 독립적인 양식이다.분명 JS 객체 형태를 기반으로 만들어진 양식이지만, javascript 뿐만 아니라 대다수의 언어, 그 언어 기반 프레임워크에서 활용할 수 있다.b. 상태를 교환한다.JSON을 통해 주고받는 데이터란 특정 객체 혹은 값들의 상태이다. 기능을 의미하..
2024.11.05
Language > Java

JAVA에서의 객체 직렬화 비교 (Byte Stream 직렬화 vs JSON 직렬화)
0. 알아볼 내용Java의 객체 직렬화에는 두 가지 종류가 있다.첫 번째로, Serializable 인터페이스를 구현한 클래스의 객체를 Byte Stream 직렬화하는 것 이다.두 번째로, RESTful API Sever를 구현할 때, 데이터 교환을 위해 객체를 JSON 직렬화하는 것 이다.두 가지의 차이점은 어렴풋이 알지만, 제대로 구분하여 기억하지 않았더니, 두 방법의 구현 방식과 활용법이 서로 뒤죽박죽 섞여 있었다. 이를 해결하기 위해 두 가지 형태의 직렬화에 대해 정확히 알아보고, 그 차이점을 구분하려 한다.여기서는 먼저 두 직렬화의 의미만 간략히 알아보고 차이점 설명에 더 집중하겠다.만약 더 자세히 알고 싶은 분은 각 항목 별 더 알아보기링크를 통해 확인하기 바란다.다음과 같은 클래스의 객체를 ..
2024.11.04
Language > Java

java TreeMap에 대해 알아보자!
(1) 정의Red-black Tree를 이용하여 구현한 Key 값을 기준으로 정렬되는 Map이다.정렬 기준은 default로 오름차순이고, 매개변수로 Comparator를 넣으면, 개발자 입맛에 따라 바꿀 수 있다. TreeMap map = new TreeMap((o1,o2) -> (return o1.score - o2.score)); Red-black Tree 란? 이진탐색을 보완하여 성능을 개선한 Tree 자료 구조이다. 이진탐색은 일반적으로 O(logN)의 시간복잡도를 가지지만, 데이터가 한쪽으로 치우쳐서, 일자형 Tree가 나올 경우(ex- 계속 작은 값의 데이터만 입력 등) O(n)이라는 시간복잡도가 든다. 이에 비해 Red-black Tree는 부모노드를 기준으로 큰 값은 오른쪽, 작은..
2024.07.18
Language > Java
Enum에 대하여
Enum은 열거형이라고 부른다. (영어로는 enumerated type이라 하고 이것의 줄임말이다.) Enum은 ‘요소’ 혹은 ‘멤버’ 라 불리는 명명된 값의 집합을 이루는 자료형이다. 여기서 ‘명명되다.’란 어떤 물건이나 일에 이름이 지어져 붙여지는 것을 말한다. Enum의 멤버가 되는 녀석들은 주로 어떤 물건이나 일을 식별하기 위한 상수 역할을 한다.
2024.01.16
Language > Java
몰랐던 것
1. Intger 컬랙션 프레임워크를 int 배열로 바꾸기. int [] arr = map.keySet().stream().mapToInt(x->x).toArray(); maptoInt(x->x): 컬랙션 프레임 워크에는 값들을 Wrapper Class인 Integer로 다 저장 했다. 하지만 배열에 저장할려면 type이 원시타입(int, double,...) 여야 한다 해당 maptoInt는 컬랙션 프레임 워크값을 IntStream으로 바꿔준다. (IntStream 원시 타입 int에 대한 Stream 이다.) toArray(): 컬랙션을 배열로 바꿔주는 함수. (원시 타입으로 바꿀 거면, 인수도 원시 타입이어야 한다.) 2. String ArrayList를 String 배열로 바꾸는 방법 String..
2023.05.21
Language > Java

콜백 (Call Back)
1. 콜백이란? 하나의 코드에 인수로 들어가는 실행 가능한 코드를 Call back이라 한다. 어떤 함수의 인자로 들어가는 실행 가능한 함수를 Call back 함수라고 한다. 2. 콜백 예제 3가지 (1) 기본적인 것 const a = (callback) => { console.log("A"); callback(); }; const b = () => { console.log("B"); }; a(b); 맨 마지막 문을 보면, a라는 함수의 인수로 b 함수 자체를 넣었다. 그러면 console.log(b) 했을 때 처럼 b 함수 자체가 a의 인수로 들어간다. 그리고 3번째 줄을 보면 callback()은 인수로 받은 b() 함수 자체를 실행하겠다는 의미이다. 따라서 출력이 다음과 같다. (2) 응용 // ..
2023.04.20
Language > JS
즉시 실행 함수 (IIFE)
1. 즉시실행함수 함수는 원래 선언부 (혹은 표현식)과 호출부가 따로 필요하다. 왜냐하면 선언부는 함수의 내용에 대해 기술만 하여 놓은 곳이고, 호출부는 함수의 내용을 쓰는 곳 이기 때문이다. 즉시 실행함수는 함수의 선언과 호출을 한번에 하는 함수를 말한다. 밑에 즉시 실행함수 사용 패턴을 배우겠지만, 대표적인 패턴으로 즉시실행함수의 모습을 살펴보면, //(실행할 함수)(인수); // 예시 ((a) => { console.log(a*2); })(7); 이와 같다. ()() 가 붙어 있는 형태로, 첫번째 ()에는 실행할 함수, 두번째 ()에는 함수에 들어갈 인자를 기술하면 된다. 2. 패턴 // 즉시 실행 함수 패턴 // 1. 화살표 함수 사용 패턴 -> 화살표 함수로 즉시 실행 함수를 쓸 수 있는 패턴은..
2023.04.20
Language > JS

화살표 함수
0. 화살표 함수는 변수에 익명 함수를 할당하는 형식이므로 함수 선언이 아니라 함수 표현식 취급을 받는다. (호이스팅 불가) 1. 화살표 함수의 패턴 const a = () => {}; // 매개변수가 하나이면 소괄호 생략 가능 const b = x => {}; const c = (x, y) => {}; // 만약 함수 동작부분에 다른 로직 없이 return문만 있다면 {}와 return 키워드 생략이 가능하다. const d = (x) => {return x * x;}; const e = (x) => x * x; // 만약 함수 동작부분 내에 return 말고 다른 로직이 있다면 { return} 형태로 적어줘야 함. const f = (x) => { console.log(x * x); return x..
2023.04.19
Language > JS

매개변수 패턴
0. 기본형 function sum(a, b) { // 여기는 인수를 받는 매개체 매개변수 return a + b; } console.log(sum(1, 2)); // 여기가 들어온 값 인수 인수, 매개변수 두 용어를 헷갈렸었는데, 인수는 함수가 호출되어 실제 들어오는 값을 뜻하고, 매개변수는 함수 선언문에 적히는 인수를 받는 매개체를 뜻한다. 1. 기본값 위의 함수에서 만약에 사용자가 sum 함수를 호출하고 인수를 하나만 쓴 경우 어떻게 될까? console.log(sum(7)); // 7과 undefined를 더 해서 not a number 두 번째 인수로는 undefined가 들어가서 7 + undefined가 되어 NaN이 출력될 것이다. 이를 방지하기 위해서 매개변수에 조치를 취할 수 있다. '..
2023.04.19
Language > JS

함수의 반환과 종료
1. return (1) 반환하는 역할 return 옆에 적힌 내용을 반환 값이라 한다. 반환 값은 함수를 호출했을 때, 호출문 자리에 대신해서 적힐 값이다. function hello() { return "hello~"; } console.log(hello()); // console.log("hello~")와 같은 말이다. ** return 옆에 아무것도 안 적어줬을 시? ** return 뒤에 아무것도 안 적어주면 undefined가 출력된다. function hello2() { return; } console.log(hello2()); (2) 함수를 종료하는 역할 함수 코드를 위에서 아래로 진행하다가 return 문을 만나면 그 자리에서 함수를 종료하고 return 값 반환 뒤, 탈출한다. 따라서 ..
2023.04.18
Language > JS

함수 선언문과 함수 표현 식의 차이 그리고 호이스팅
1. 함수 선언문 함수 선언 Keyword로 시작해서 함수를 선언하는 문장. //함수 선언문 function hello () {} function 함수이름 (인수 넣는 자리) {동작 로직} 형태로 적힌다. 2. 함수 표현식 변수에 익명함수나 기명 함수를 대입하는 형태의 표현식이다. // 표현식 1. 기명함수를 변수에 대입 const world = function hello () {} // 표현식 2. 익명함수를 변수에 대입 const world2 = function () {} const world3 = () => {} 표현식 1인 기명함수를 변수에 대입할 시 원래 함수의 이름으로 더 이상 호출하여 쓰지 못한다. 무조건 대입한 변수 이름으로만 호출하여 쓸 수 있다. hello(); // error -> 엥..
2023.04.18
Language > JS
HTML에서 JavaScript 쓰기
1. HTML 내부에 JavaScript를 쓰는 것 (CSS 인라인 형식과 유사) html 내에서 script란 태그를 쓰면 그 태그 안 쪽에 자바 스크립트 코드를 쓸 수 있다. 2. 외부 파일로부터 JavaScript 코드 가져오기 사이에 외부 파일의 JS 코드 전체가 들어가는 것과 동일하다. 만약 이렇게 쓴다면? 해당 경우, 사이에 쓰인 코드 내용은 무시된다. 왜냐하면 scr에 적힌 내용이 안으로 들어가는 것이기 때문이다.
2023.04.17
Language > JS

While, do while
1. while break 할 수 있게 만들어주지 않으면 무한 루프가 돌 수 있다. 따라서 ( ) 안이든 { } 안이든 증감과 조건문을 달아줘야 한다. 2. do while while 조건에 처음 부터 안 맞아서 명령 실행 부가 아예 실행이 안될 수 있다. 이것을 막고자 쓰는 do while 문은 처음 한번은 문장이 실행되도록 해준다. do {} while ()은 먼저 명령어 부분을 한 번 실행하고, 루프에 진입한다. 0은 대표적인 falsey 값이라 참이 안된다. 이 문장을 맨 처음 한번은 실행하고 싶다면, 이렇게 하면 문장을 한 번 실행하고 루프에 진입한다.
2023.04.14
Language > JS