2025/03 36

[데이터베이스] 데이터와 데이터베이스, DBMS

데이터베이스는 데이터(data)와 베이스(base)의 합성어이다.DBMS는 Database Management System의 줄임말로, '데이터베이스 관리 시스템'을 뜻한다. 효율적인 데이터 관리 조건데이터를 통합하여 관리데이터 누락 확인과 중복 제거일관된 방법으로 관리여러 사용자(응용 프로그램 포함)가 공동으로 실시간 사용 가능파일 시스템데이터베이스 개념이 등장하기 전에는 주로 파일 시스템 방식을 사용하여 데이터를 관리했다.파일 시스템은 서로 다른 여러 응용 프로그램이 제공하는 기능에 맞게 필요한 데이터를 각각 저장하고 관리한다.그렇기 때문에 각 파일에 저장한 데이터는 서로 연관이 없고 중복 또는 누락이 발생할 수 있다. DBMS이러한 파일 시스템의 단점을 보완하기 위해 DBMS 가 등장한다.데이터베이..

CS/Database 2025.03.20

[책 리뷰] 《Do it! 오라클로 배우는 SQL 입문》

이지스퍼블리싱 서평단으로 선정되어 도서를 지원받아 솔직하게 쓴 글입니다. 컴퓨터공학을 전공하는 사람들 혹은 전공한 사람들 중 데이터 분석가를 자신의 직업으로 삼고 싶어하는 사람은 많다. 데이터 분석가가 무엇일까. 데이터 분석가는 데이터를 정리하고 시각화하며, 데이터의 구조와 저장 방식을 이해하는 사람들이다. 분석 뿐 아니라 데이터의 수집과 저장 그리고 가공까지 이해하는 사람들이다. 데이터 분석가는 엑셀, 파이썬, R 과 같은 도구를 통하여 데이터를 다루지만 기본이 되는 것은 '데이터베이스'이다. SQL을 활용하여 데이터를 추출하고 변형하며 빠른 속도로 정교하게 분석도 가능하다. 나는 학교에서 데이터베이스를 배울 때 아쉬웠던 점이 많았다. 교수님께서 설명은 해주셨다만, 이해가 되지 않았다. 하지만 오늘 리..

교육/책 리뷰 2025.03.20

[백준] 10773번 : 제로 - C/C++

문제 풀이 순서는 아래와 같다.1. 입력할 숫자의 개수 k 입력2. k개만큼의 수 입력 받기 (0을 입력했다면 최근에 입력한 수 지우기)3. 입력을 완료했다면 남아있는 수 출력하기 최근에 입력한 수를 지우는 방법은 stack을 사용하면 된다.스택은 LIFO의 형태이기 때문에 0을 push 했을 경우에,두 번 pop 해주면 된다. 그렇게 코드를 작성해보자.스택을 사용하기 위해서는 헤더를 추가해주어야 한다.#include  입력받을 개수 k를 입력 받았다고 가정하고,스택을 구현하자.stack st;for(int i=0;i> n; if(n == 0){ if(!st.empty()){ st.pop(); } } else { t.push(n); }} 스택을 이렇게 간단하게 구현할 수 있다!0을..

Algorithm 2025.03.19

[Android] 안드로이드 레이아웃(Layout)

이번 글에서는 안드로이드의 레이아웃과 그 속성에 대해 이야기해보고자 한다.먼저 레이아웃의 종류에 대해 알아보자.  위의 사진에서 볼 수 있듯이 레이아웃은 StackLayout, AbsolteLayout,RelativeLayout, GridLayout, ContentView, ScrollView, Frame 총 7개의 종류로 나눌 수 있다.이렇게 나누는 사람도 있고,Linear LayoutRelative LayoutConstraint LayoutTable LayoutFrame LayoutList ViewGrid ViewAbsolute LayoutWebViewScrollView위와 같이  종류를 나누는 사람도 있다.어떻게 종류를 나눠도 상관은 없다.이제 레이아웃의 속성에 대해 알아보자.TextView안드로이..

Android 2025.03.19

[Android] 안드로이드 매니페스트(Manifest)란?

Manifest란?Manifest는 앱의 기본 정보와 시스템 권한, 컴포넌트 등을 정의하는 필수적인 설정 파일이다.앱이 실행될 때 안드로이드 운영체제는 이 파일을 참고하여 앱의 구조와 동작 방식을 이해하고, 필요한 권한과 기능을 적절히 할당한다.주요 속성 : , , , , , ,  package, xmlns:androidallowBackup, icon, label, theme, usesCleartextTrafficname, exported, launchMode, screenOrientation, themename, exported, foregroundServiceTypename, enabled, exportedname (필요한 권한 설정)name, value (앱 설정 값) 태그속성매니페스트 파일의 최상..

Android 2025.03.18

[Android] 안드로이드 아키텍처(Architecture) 권장사항

안드로이드의 아키텍처에 관해 설명하기 전에 안드로이드에 대해 알아보자.안드로이드란?안드로이드는 구글에서 만든 스마트폰과 태블릿 PC 같은 터치스크린 모바일 장치용으로 디자인된 운영체제이다.수정된 리눅스 커널 버전을 비롯하여 오픈 소스 소프트웨어에 기반을 둔 모바일 운영체제이다. 안드로이드는 아래와 같은 구조를 가진다. 안드로이드는 리눅스 커널 위에서 동작하고, 자바와 코틀린을 통하여 개발한다. 그럼 안드로이드의 권장 아키텍처는 무엇일까?안드로이드는 MVVM 또는 MVI 패턴을 사용하고 Jetpack 라이브러리를 통하여 데이터 바인딩, UI 관리, 의존성 주입 등을 처리하는 것을 권장한다. 위와 같은 구조는 앱의 유지보수성과 확장성을 높이고, 모듈화된 레이어를 통하여 관심사를 분리하고 복잡성을 관리한다. ..

Android 2025.03.17

[백준] 13023번 : ABCDE - C/C++

문제에서 말하는 친구 관계에 대해 다시 살펴보자.A는 B와 친구다.B는 C와 친구다.C는 D와 친구다.D는 E와 친구다.간단하지만 문제에서 말하고 있는 문장을 도식화하면 위와 같다. 사람의 수를 node라고 볼 수 있고, 친구 관계의 수는 edge라고 볼 수 있다.각각 2,000이 MAX 임을 문제에서 이야기하고 있다.그래프를 보고 위의 그림과 같은 관계가 있는지 파악하는 문제이다. 예제 입력4를 그림으로 그려서 확인해 보자.그림은 이렇게 그릴 수가 있다.이제 친구 관계가 위에서 본 것과 같이 일자로 된 것이 있는지 확인해보자.0번 노드에서 출발하여 2번 노드까지 도착하는 것을 도식화하면 아래와 같다.ABCDE 순서로 일자로 나열되기 때문에 해당 예시는 1을 출력하게 되는 것이다. 13023번은 아래와 ..

Algorithm 2025.03.17

[백준] 16953번 : A → B - C/C++

문제를 보고 A → B 이렇게 가는건 너무 경우의 수가 많지 않은가?라는 생각을 했다.하지만 반대로 B → A 의 수는 연산의 횟수가 적을 것이라고 생각할 수 있다. 그러니, 우리는 위와 같은 아이디어로 문제를 풀어나갈 수 있다. B → A 를 생각해보자.짝수라면 2로 나누기끝자리가 1이라면 1을 제외시키기1번과 2번에 속하지 않는다면 -1 출력1번과 2번을 코드로 바꾸면 아래처럼 작성할 수 있다.더 깔끔한 코드가 있을 수 있겠지만, 필자는 이렇게까지가 최선이다.while(a  b가 짝수라면 2로 나누기. (가능한 연산이 곱하기 2, 맨 끝자리에 1 추가하기 뿐이니..)if(b % 10 == 1) 이 부분이 끝자리가 1일 때 제거하는 방법. (왜 끝자리가 1이냐면, 1만 추가할 수 있으니까.) 이렇게 핵..

Algorithm 2025.03.16

[백준] 11719번 : 그대로 출력하기 2 - C/C++

문제가 간단하다.설명도 엄청 간결하다. 이 문제를 해결하기 위해서 쓰인 개념은getline()이다. getline() 함수를 사용하기 위해서는 string 라이브러리를 사용해야 한다.공백의 문자열이 주어질 수도 있어서 while 문의 조건식으로 getline() 함수를 사용하자.string str;while(getline(cin,str)){ cout  이렇게 코드를 작성하면 된다.근데 입력이 없다면 종료가 되어야하는데,내가 작성한 코드는 control(^)+c 를 눌러야 종료가 된다.이런식으로 작성해서 제출한 코드가 수두룩빽빽인데,다 맞았다고 하니까 이번에도 스리슬쩍.. 내가 처음에 썼던 getline() 함수는 아래와 같다.getline(cin, str);cout 이렇게 되어버리면 공백을 포함해서..

Algorithm 2025.03.15

[백준] 2839번 : 설탕 배달 - C/C++

문제 풀이 순서는 다음과 같다.1. n 입력 받기2. 합리적으로 무게 나누기 필자는 말을 잘 못하기 때문에.. 이정도로 정리하겠다. 최소 개수의 설탕 봉지가 필요한 것이기 때문에3킬로그램 짜리와 5킬로그램 짜리 중에서 우리는 "5"를 적극 활용하도록 하자. 만약 입력한 수 n이 15라면, 3킬로그램 짜리를 5개, 5킬로그램 0개 가 필요하므로 총 5개가 필요하다.하지만 5킬로그램만 사용하게 된다면 3킬로그램 짜리 0개, 5킬로그램 3개가 필요하다.그러니 5킬로그램을 필터링에 걸리도록 작성해주자. if(n%5==0){ cnt += n/5; cout  그럼 3킬로그램짜리는 어떻게 처리할까?5로 나누어 떨어지지 않을 때 3씩 빼주면서 처리해주면 된다.n -= 3;cnt++; 우리는 설탕 봉지의 개수를 출력..

Algorithm 2025.03.13