Stranger's LAB
Popular Posts
-
자바 [JAVA] - 제네릭(Generic)의 이해
자바 [JAVA] - 제네릭(Generic)의 이해
2020.10.19정적언어(C, C++, C#, Java)을 다뤄보신 분이라면 제네릭(Generic)에 대해 잘 알지는 못하더라도 한 번쯤은 들어봤을 것이다. 특히 자료구조 같이 구조체를 직접 만들어 사용할 때 많이 쓰이기도 하고 매우 유용하기도 하다. 잠깐 그럼 제네릭(Generic)이란 무엇인지에 대해 알고 가보도록 하자. 제네릭(Generic)은 직역하자면 '일반적인'이라는 뜻이다. 음.. 한 번에 이해가 가진 않는다. 조금 더 부연설명을 하자면 '데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법'이다. 우리가 흔히 쓰는 ArrayList, LinkedList 등을 생성할 때 어떻게 쓰는가? 객체 객체명 = new 객체(); 이렇게 쓰지 않는가? 즉, 아래와 같이 여러 .. -
자바 [JAVA] - 스캐너(Scanner) 클래스와 입력
자바 [JAVA] - 스캐너(Scanner) 클래스와 입력
2020.05.07자바를 처음 배울 때 아마 대부분은 키보드로 입력받기 위해 Scanner 라는 클래스를 썼을 것이다. 자바 외에도 다양한 언어들은 각각의 입력방식이 있고, 각 언어별로 대표하는 대중적인 입력방식이 하나씩 있다. 예로 들면 C언어의 경우 scanf() 가 있을 것이고 파이썬의 경우 input(), C++ 은 cin, C# 은 Console.readLine() 등이 있다. 자바에서도 여러가지 입력방법이 입력방법이 있는데, 그중 가장 쉬우면서도 대중적인 입력 중 대표적인 것이 바로 Scanner 클래스를 이용한 입력이다. 이번 포스팅에서는 Scanner 의 사용 방법에 대해 자세하게 알아보자. Scanner 클래스의 특징 기본적인 데이터 타입들을 Scanner 의 메소드를 사용하여 입력받을 수 있다. 예로 들.. -
자바 [JAVA] - Comparable 과 Comparator의 이해
자바 [JAVA] - Comparable 과 Comparator의 이해
2021.04.29아마 이 글을 찾아 오신 분들 대개는 Comparable과 Comparator의 차이가 무엇인지 모르거나 궁금해서 찾아오셨을 것이다. 사실 알고보면 두 개는 그렇게 어렵지 않으나 아무래도 자바를 학습하면서 객체, 클래스, 인터페이스 등을 배우면서 같이 학습하다보니 혼란스럽게 느껴지기도 하고, 도대체 무엇이 다른지에 대한 이해를 하기가 어렵기도하다. 안그래도 필자의 경우 자료구조와 백준 문제를 풀이하며 포스팅을 하고 있는데, 자료구조의 경우 Heap(PriorityQueue), 백준에서는 정렬문제에서 많이 받은 질문 중 하나여서 이 참에 한 번 정리하고 가는 것이 여러분이 필자가 올리는 글을 이해하는데 더욱 수월할 것 같아 포스팅을 해보고자 한다. 일단 글은 다음과 같은 순서로 진행 할 것이다. 먼저 Co.. -
패스워드의 암호화와 저장 - Hash(해시)와 Salt(솔트)
패스워드의 암호화와 저장 - Hash(해시)와 Salt(솔트)
2020.05.23[읽기 전에] 더보기 이 번 주제 같은 경우 어디까지나 비밀번호를 어떠한 원리로 저장하게 되는지 그 과정을 살펴보기 위한 글이다. 읽다보면 구현 소스코드들이 나올텐데 실제로는 이후 나오는 코드처럼 구현하지는 않는다. 각 프레임워크, 언어별 혹은 내규에 의해 웹서버 혹은 앱을 구현 할 때 일반적인 구현 방침이 있다. 이는 이후 여러분들이 개발을 해나가면서 자연스레 접하게 될 것이다. 또한 이 포스팅의 목적은 언어만 알거나 패스워드 저장 원리에 대해 호기심이 있는 분들을 대상으로 하기 때문에 내용이 실제 개발함에 있어 쓰이는 것과는 차이가 많이 날 것이다. 그렇다고 너무 깊게 들어가게 되면 포스팅의 목적과도 다르므로 이 점 참고하시기를 바란다.. 어디까지나 과정을 이해하기 위해 구현 된 아주아주 간소화 된 .. -
메모리 구조 [Memory Structure]
메모리 구조 [Memory Structure]
2021.01.31안녕하세요. 오늘은 제목에서 밝혔듯 메모리 구조에 대해 알아보려 합니다. 흔히 메모리라고 하면 RAM을 지칭하는데요, 보통 컴퓨터 구조에 대해 학습하시거나 배우셨던 분들은 알겠지만 메모리의 종류는 많아도 엄청 많은 걸 알고 있을 겁니다. 그만큼 컴퓨터에서는 매우 중요한 부품 중 하나죠. 컴퓨터 구조에 대해 전반적으로 다루려고 하면 내용이 너무 많아지기 때문에 오늘은 메모리에 대해 우리가 코딩한 것과 어떤 관계가 있는지를 알아보고자 합니다. 왜 그러면 다른 것들도 많은데 메모리냐! CPU나 명령어 셋이 더 중요하지 않냐! 라고 하실 수도 있겠지만, 틀린 말은 아니더라도 메모리도 매우 중요하다고 봅니다. 특히 알고리즘 문제를 많이 풀어본 분들은 알겠지만, 한정된 자원 안에서 효율적으로 프로그램이 실행 될 수.. -
2진수의 수와 음수 표현법 [1의 보수와 2의 보수]
2진수의 수와 음수 표현법 [1의 보수와 2의 보수]
2021.01.01안녕하세요. 오늘은 프로그래밍이 아닌 컴퓨터의 연산에 대해 이해해보고자 합니다. 우리가 흔히 프로그래밍을 할 때는 그나마 사람에 가까운 언어로 된 고급언어들로 작성을 하지만 실제 컴퓨터가 프로그램에 대해 이해하고 작동하는 방식에 대해는 잘 알려고 하지는 않죠. 그래서 이 번에는 컴퓨터의 기본 연산 중 가장 혼돈하기 쉽고 잘 못 배우면 어렵게 느껴지는 2진수의 표현법. 그 중 특히 보수(補數)에 대해 알아보고자 합니다. 만약 직전 포스팅인 '프로그래밍 언어와 빌드 과정'을 보셨다면 우리가 프로그램을 개발하기 위해 고급언어들로 작성한 소스코드들은 결과적으로 컴퓨터가 이해할 수 있는 언어로 번역된다고 했죠. 간단한 이유이지만, 컴퓨터는 근본적으로 0과 1밖에 모르기 때문입니다. 좀 더 직관적으로 말하자면 전기..
Recents Posts
-
자바 [JAVA] - Binary Search Tree (이진 탐색 트리) 구현하기
자바 [JAVA] - Binary Search Tree (이진 탐색 트리) 구현하기
2022.09.24자료구조 관련 목록 링크 펼치기 더보기 0. 자바 컬렉션 프레임워크 (Java Collections Framework) 1. 리스트 인터페이스 (List Interface) 2. 어레이리스트 (ArrayList) 3. 단일 연결리스트 (Singly LinkedList) 4. 이중 연결리스트 (Doubly LinkedList) 5. 스택 인터페이스 (Stack Interface) 6. 스택 (Stack) 7. 큐 인터페이스 (Queue Interface) 8. 배열 큐 (Array Queue) 9. 연결리스트 큐 (LinkedList Queue) 10. 배열 덱 (Array Deque) 11. 연결리스트 덱 (LinkedList Deque) 12. 배열 힙 (Heap) 13. 우선순위 큐 (Priority.. -
[백준] 3003번 : 킹, 퀸, 룩, 비숍, 나이트, 폰 - [C++]
[백준] 3003번 : 킹, 퀸, 룩, 비숍, 나이트, 폰 - [C++]
2022.09.07https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 문제 기본 조건문만 안다면 그리 어렵지 않은 문제다. 알고리즘 [접근 방법] (필자가 Java하고 C++를 따로 포스팅하다보니 같은 문제에 대해 본문 내용은 거의 같다.. 그러니 만약 둘 다 보시는 분들이라면 양해를 바란다..) 체스.. 예전에 진짜 자주 두었었던 게임이다.. 킹 1, 퀸 1, 룩 2, 비숍 2, 나이트 2, 폰 8로 총 16개의 말을 활용하여 상대 말들을 하나씩 따내면서 체크메이트를 만들거나 스테일메이.. -
[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]
[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]
2022.09.06https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 문제 기본 조건문만 안다면 그리 어렵지 않은 문제다. 알고리즘 [접근 방법] 체스.. 예전에 진짜 자주 두었었던 게임이다.. 킹 1, 퀸 1, 룩 2, 비숍 2, 나이트 2, 폰 8로 총 16개의 말을 활용하여 상대 말들을 하나씩 따내면서 체크메이트를 만들거나 스테일메이트 등 기본적으로 왕이 움직일 수 없게 만들거나 잡힐 수 밖에 없는 상황을 만들어 이기면 된다. 아무튼.. 위 본문에도 나와있듯 각 체스말들의 개수는 고.. -
[백준] 2480번 : 주사위 세개 - [C++]
[백준] 2480번 : 주사위 세개 - [C++]
2022.08.05https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 문제 3개의 변수 비교를 하는 방법에 관한 문제다. 자바에서는 다중비교도 가능하기 때문에 쉽게 풀이할 수 있을 것이다. 알고리즘 [접근 방법] 위 문제에서 가장 중요한 것은 결국 세 개의 변수 비교다. 그 변수들에 따라 같은 것이 존재할 경우 같은 변수가 무엇인지를 찾고, 같은 변수가 두 개인지, 세 개인지를 판단해야한다. 또는 모두 다를 경우 세 개의 변수 중 가장 큰 것을 찾는 .. -
[백준] 2480번 : 주사위 세개 - JAVA [자바]
[백준] 2480번 : 주사위 세개 - JAVA [자바]
2022.08.04https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 문제 3개의 변수 비교를 하는 방법에 관한 문제다. 자바에서는 다중비교도 가능하기 때문에 쉽게 풀이할 수 있을 것이다. 알고리즘 [접근 방법] 위 문제에서 가장 중요한 것은 결국 세 개의 변수 비교다. 그 변수들에 따라 같은 것이 존재할 경우 같은 변수가 무엇인지를 찾고, 같은 변수가 두 개인지, 세 개인지를 판단해야한다. 또는 모두 다를 경우 세 개의 변수 중 가장 큰 것을 찾는 .. -
[백준] 2525번 : 오븐 시계 - [C++]
[백준] 2525번 : 오븐 시계 - [C++]
2022.07.24https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 문제 직전 문제인 알람 시계(2884번)와 거의 유사한 문제라 해당 문제를 풀었다면 어렵지 않게 풀 수 있었으리라 본다. 만약 아직 풀지 않으셨다면 해당 문제를 먼저 보고오시는 것을 추천드린다. 알고리즘 [접근 방법] 이 번 문제는 알람 시계 문제의 반대라고 보시면 된다. 알람 시계 문제에서는 주어진 시간에서 45분을 뺐어야 했다면 이 문제에선 사용자 입력에 따라 C분을 더해야 한다... -
[백준] 2525번 : 오븐 시계 - JAVA [자바]
[백준] 2525번 : 오븐 시계 - JAVA [자바]
2022.07.22https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 문제 직전 문제인 알람 시계(2884번)와 거의 유사한 문제라 해당 문제를 풀었다면 어렵지 않게 풀 수 있었으리라 본다. 만약 아직 풀지 않으셨다면 해당 문제를 먼저 보고오시는 것을 추천드린다. 알고리즘 [접근 방법] 이 번 문제는 알람 시계 문제의 반대라고 보시면 된다. 알람 시계 문제에서는 주어진 시간에서 45분을 뺐어야 했다면 이 문제에선 사용자 입력에 따라 C분을 더해야 한다... -
[백준] 25083번 : 새싹 - [C++]
[백준] 25083번 : 새싹 - [C++]
2022.07.06https://www.acmicpc.net/problem/25083 25083번: 새싹 아래 예제와 같이 새싹을 출력하시오. www.acmicpc.net 문제 알고리즘 [접근 방법] 이 번 문제도 단순 출력문제다. 다만, 제어 문자(이스케이프 시퀀스)에 대해 이해를 하고 있어야 한다. 해당 부분에 대한 얘기는 아래 글에서 다루고 있으니 이 부분을 참고하여 풀이하시기를 바란다. https://st-lab.tistory.com/204