본문 바로가기
728x90

전체 글40

[백준 10811번] 바구니 뒤집기 (브론즈 II) - Java/자바 문제 링크 알고리즘 분류: 구현, 시뮬레이션 정답비율 58% (2023.06.07 기준) 문제 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다. 도현이는 앞으로 M번 바구니의 순서를 역순으로 만들려고 한다. 도현이는 한 번 순서를 역순으로 바꿀 때, 순서를 역순으로 만들 범위를 정하고, 그 범위에 들어있는 바구니의 순서를 역순으로 만든다. 바구니의 순서를 어떻게 바꿀지 주어졌을 때, M번 바구니의 순서를 역순으로 만든 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작.. 2023. 6. 9.
[DB/데이터베이스] 이상 현상(Anomaly)이란? 설명, 종류와 예시 DBMS에서는 정규화를 제대로 하지 않으면 데이터의 무결성에 문제가 생긴다. 이는 데이터의 이상 현상 때문이다. 따라서 DB를 설계할 때는 이상 현상이 생기지 않도록 고려해 설계해야 한다. 이상 현상이란 데이터의 삽입, 삭제, 수정 시 원하지 않는 데이터도 함께 영향을 받아 데이터의 무결성을 해치는 문제를 말한다. 종류와 예시를 살펴보자. 이름 학년 학과 수강과목 담당교수 라이언 1 체육학과 운영체제 김교수 어피치 1 경영학과 데이터베이스 이교수 어피치 1 경영학과 자료구조 박교수 춘식이 2 컴퓨터공학과 데이터베이스 이교수 삽입 이상 (Insertion Anomaly) 데이터를 삽입할 때 의도와 다른 값들이 삽입되는 것을 말한다. 예를 들어, 새로운 학생이 입학해서 위 테이블에 [이름, 학년, 학과]만 .. 2023. 6. 7.
[프로그래머스] 덧칠하기(Lv.1) - Java/자바 문제 링크 코딩테스트 연습 > 연습문제 > 덧칠하기 (Lv. 1) 정답률 58% (2023.06.05 기준) 문제 설명 어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. 넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다. 벽에 페인트.. 2023. 6. 5.
[탐색 알고리즘] 이진 탐색 (Binary Search) 탐색 알고리즘의 기초 중 하나인 이진 탐색. 위에 첨부한 gif가 이진 탐색의 모든 것을 설명해 준다. 이진 탐색은 오름차순으로 정렬된 정수의 리스트를 절반으로 나눈 후, 둘 중 필요한 부분만 취하는 과정을 반복해서 원하는 원소를 얻는 탐색 방법이다. 위 사진을 예로 들면, 5를 찾을 때, 우선 리스트를 중간값인 mid를 기준으로 해서 절반으로 나눈다. 여기서 mid는 4이다. 이 4가 5보다 작은지 큰지를 판단한다. 4 < 5기 때문에 오른쪽 절반 리스트만 취하고, 왼쪽 절반 리스트는 버린다. mid가 5보다 작으므로 strat를 mid+1 값으로 변경한다. 만약 5보다 크면 end를 mid-1값으로 변경했을 것이다. 이 과정을 반복하다 보면, 결국엔 mid = target인 때가 온다. 이렇게 되면 .. 2023. 6. 3.
[Java/자바] 객체 지향의 특징, 장단점과 5대 원칙 SOLID 설명 자바는 대표적인 객체 지향 언어로, 객체지향의 5대 원칙인 SOLID라는 것이 있다. 객체 지향에 대해 간단히 알아보고, 특징과 SOLID에 대해서도 알아 보자. 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 자바를 처음 배울 때부터 정말 수도 없이 들어 본 용어이다. 우선, 객체 지향에 반대가 되는 개념으로는 절차 지향이라는 것이 있다. 절차 지향 프로그래밍은 말 그대로 코드를 절차 별로, 순서대로 실행되게 프로그래밍하는 것이다. 그러므로 프로그램의 흐름에 중점을 두게 된다. C언어가 대표적인 절차 지향 프로그래밍 언어이다. 객체 지향은, 객체들 간의 관계와 상호 작용을 이용하여 프로그램을 구성하는 것을 말한다. 현실 세계의 사물 등을 프로그래밍에 이용하기 위해 객.. 2023. 6. 1.
[Java/자바] 오버라이딩(Overriding)과 오버로딩(Overloading) 오버라이딩과 오버로딩은 자바를 공부하는 사람이라면 자주 접해봤을 용어이다. 두 용어는 분명 다르지만 발음이 비슷하고, 일부 특징이 헷갈릴 수 있어서, 잘 구분해서 알아두는 게 좋다. 오버라이딩(Overriding) 오버라이딩에 대해 알기 위해서는 자바의 상속 개념을 이해해야 한다. 상속은 간단히 설명하자면 말 그대로 부모의 특성들을 받아와서 사용하는 것을 말한다. 이렇게 부모 클래스를 상속받은 자식클래스에서 부모 클래스의 메소드를 재정의하는 것을 오버라이딩이라고 한다. 자바 개발을 하면 IDE에서 개발하는 경우가 많을 텐데, IDE에서는 어떤 클래스나 인터페이스를 상속 받아서 Override가 가능한 경우 자동 완성을 시켜주는 기능이 있다. 이클립스의 경우 다음과 같다. 그리고 이 자동완성 메소드를 선택.. 2023. 5. 30.