본문 바로가기

반응형

개발

(176) GITHUB 방명록
[JAVA 파헤치기] 객체 지향, 클래스, 객체 개념 다루기 개발/Java / 2022. 3. 7. 1. 객체지향 언어 자바(Java)의 특징인 객체지향에 대해서 알아보도록 하겠습니다. 객체 지향 프로그래밍(Object-Oriented Programming,OOP)은 여러 개의 독립된 단위, 즉 "객체(Object)"들의 모임으로 파악하는 것입니다. 다시 말해서 프로그램을 수많은 객체라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식입니다. 여기서 객체는 '실제로 존재하는 것'입니다. 즉 어떠한 데이터(실체)와 관련된 동작을 포함한 개념입니다. 예를 들어 우리 주변에서 볼 수 있는 책상, 의자, 자동차, 고객 등과 같습니다. 객체지향이론에서는 사물과 같은 유형적인 것뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주합니다. JavaScript : 프로토타입 객체지향 Python : ..
[백준] 하노이 탑 이동 순서_11729_자바 개발/DS&Algorithms / 2022. 2. 23. 11729번 Java - 하노이 탑 이동 순서 이번 문제의 분류는 에 해당합니다. 하노이 탑 관련 문제는 재귀의 대표라고 할 수 있습니다. 저는 하노이 탑 원리를 알고 있으면서도, 알고리즘을 구현하는 것이 쉽지 않았습니다. 따라서 이렇게 정리합니다. 시작하기에 앞서서 재귀에 대해서 정리해보도록 하겠습니다. 재귀 함수란? 자기 자신을 호출하는 함수로 종료조건이 충족될 때까지 주어진 작업을 수행하는 것입니다. 팩토리얼을 구하는 문제로 재귀 함수 예시를 들겠습니다. 팩토리얼이란? 하나의 자연수 n이 주어졌을 때, 1부터 n 까지 모든 자연수의 곱을 말합니다. 기호로 표시하면, n! 라고 나타냅니다. 다시 말해서 5!을 구하면, 1 X 2 X 3 X 4 X 5 가 되면서 결과는 120이라는 값을 얻습니다. 이제..
[백준] 소인수분해_11653_자바 개발/DS&Algorithms / 2022. 2. 15. 11653번 Java - 소인수분해 이번 문제의 분류는 에 해당합니다. 소인수분해는 중등 과정에서 한 번씩 배운 내용입니다. 그래서인지 기억이 가물가물 하네요.😂 소인수분해는 이름 그대로 어떤 자연수를 소인수로 분해한 것입니다. 나눗셈 과정을 보겠습니다. (나눠지는 수) ÷ (나누는 수) = (몫) + (나머지) 약수는 나눗셈에서 나머지가 0일 때 (나누는 수)를 말합니다. 즉, 나눠지는 수의 약수입니다. 약수는 여러 개가 있을 수 있습니다. 이때 나누는 수와 몫은 나눠지는 수의 인수에 해당합니다. 예를 들면 나눠지는 수가 30일 때, 인수는 1, 2, 3, 5, 6, 10, 15, 30입니다. 이제 소수를 알아보겠습니다. 소수는 1과 자기 자신 이외의 자연수로는 나눌 수 없는, 1보다 큰 자연수를 말합..
[백준] ACM 호텔_10250_자바 개발/DS&Algorithms / 2022. 2. 11. 10250번 Java - ACM 호텔 이번 문제의 분류는 에 해당합니다. 아래 문제를 보면 어렵게 느껴질 수 있겠지만, 타문제에 비해 비교적 간단한 문제입니다. 하지만 저는 문제를 풀면서 많은 시행착오를 겪게 되었습니다. 😂😂 그래서 이렇게 정리합니다. 현재 진행하는 코딩테스트 스터디 CoP장 형인님께서 아이디어 도움을 주셨습니다. 그리고 ST_LAB 티스토리를 통해 풀이 방법을 이해했습니다. 출처 : [https://st-lab.tistory.com/77] https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트..
[백준] 알파벳 찾기_10809_자바 개발/DS&Algorithms / 2022. 2. 5. 10809번 Java - 알파벳 찾기 이번 문제는 입니다. https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 1. 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. * 마치 영어를 번역한 듯한 난해한 문장의 문제입니다. 뒤에서 예제 입력과 출력을 보면 이해가 바로 되실 겁니다. 2. 예..
[알고리즘] 정렬 알고리즘 정리(2) 개발/DS&Algorithms / 2022. 2. 4. 03. 정렬 알고리즘(2) 저번에는 정렬 알고리즘에서 O(N^2)의 수행속도로를 갖는 방식 3가지(버블, 삽입, 선택)에 대해서 알아봤습니다. 이번에는 O(logN)의 수행속도를 갖는 정렬에 대해서 알아볼 것인데요. O(logN) 정렬들은 앞에서 알아본 정렬들과 다르게 '검색 범위가 점점 감소하는 방식'이라는 큰 특징을 갖습니다. 1) 퀵 정렬 퀵 정렬은 배열에서 한 수를 기준으로 작은 수와 큰 수를 재배치 하는 방법입니다. 여기서 기준을 피봇(PIVOT)이라고 합니다. 2) 병합(합병) 정렬 분할(Divide) : 하나의 리스트를 균등하게 두 개의 리스트로 분할합니다. 정복(Conquer) : 분할된 부분 배열을 정라합니다. 부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용하여 다시 분할 정복 ..

반응형