(Java) 프로그래머스 - 개인정보 수집 유효기간
·
코딩 테스트
카카오 문제치고 쉬운 문제였다. 인풋 값도 적어서 시간 초과를 생각하지 않고 편한 마음으로 풀었다. Date와 SimpleDateFormat를 이용해서 계산하는 방법도 생각했지만 그냥 계산하는게 더 간단해 보여서 사용하지는 않았다. 로직 먼저 terms 배열을 순회하며 map에 약관종류와 유효기간을 넣어준다. 그리고 privacies를 순회하며 약관 종류에 맞는 유효기간을 가져와 cal 메서드를 호출한다. 유효기간이 1이 될 때까지 날짜를 계산하여 년월일을 일자로 바꾸어 현재 날짜와 비교한다. cal 메서드의 반환값이 false이면 list에 추가하고 모든 순회가 끝나면 stream을 이용해 배열로 변환한다. 최종 코드 import java.util.*; class Solution { public int..
[데이터베이스 개론] Chapter4 - 데이터 모델링
·
Database
데이터 모델링과 데이터 모델의 개념 현실세계의 데이터를 컴퓨터 데이터베이스로 옮기는 변환 작업을 데이터 모델링이라 한다. 현실의 데이터에서 중요한 부분만 선별하는 것을 추상화라 하며 추상화를 통해 데이터 모델링을 진행한다. 데이터 모델링은 두 단계로 나누어 진행되는데, 현실에서 중요 데이터를 추출하여 개념 세계로 옮기는 작업을 개념적 모델링이라 하고 개념 세계에서 데이터베이스에 저장할 구조를 결정하고 표현하는 작업을 논리적 모델링이라 한다. 현실 세계의 데이터를 모델링 하기 쉽게 데이터 모델이라는 도구의 도움을 받는다. 데이터 모델은 두 가지로 나뉘는데 현실 세계를 개념적 데이터 모델링하여 데이터베이스의 개념적 구조로 표현하는 개념적 데이터 모델과 개념적 구조를 논리적 데이터 모델링하여 데이터베이스의 논..
[데이터베이스 개론] Chapter3 - 데이터베이스 시스템
·
Database
데이터베이스 시스템의 정의 데이터베이스 시스템이란 데이터베이스에 데이터를 저장하고, 저장된 데이를 관리하여 필요한 정보를 생성해 주는 시스템이다. 데이터베이스 : 데이터를 저장하는곳, 저장된 데이터의 집합 데이터베이스 관리 시스템 : 데이터베이스에 저장된 데이터의 일관적이고 무결한 상태로 유지하되도록 관리하는 것 데이터베이스 시스템 : 데이터베이스와 데이터베이스 관리 시스템을 이용해 필요한 정보를 제공하는 것 추가적으로 데이터베이스 시스템은 데이터 언어, 데이터베이스와 DBMS 설치, 데이터 처리 연산을 담당한다. 데이터베이스의 구조 스키마(schema) 스키마는 데이터베이스에 저장되는 데이터 구조와 제약 조건을 정의한 것이다. 그리고 저장된 실제 데이터 값은 인스턴스라고 한다. 스키마는 한번 정의되면 ..
[데이터베이스 개론] Chapter2 - 데이터베이스 관리 시스템
·
Database
데이터 관리 시스템 (DBMS)의 등장 배경 데이터베이스 관리 시스템이 등장하기 이전에는 데이터를 파일 시스템을 이용하여 관리하였다. 파일 시스템은 프로그램별로 필요한 데이터를 별도의 파일로 관리하였고 이는 개발자가 파일의 논리적, 물리적 구조를 정확히 파악하여야 했다. 파일 시스템을 이용했을때 데이터 관리 문제점 같은 내용의 데이터가 여러 파일에 중복 저장된다. 파일 시스템에서는 응용 프로그램별로 파일을 유지하기 때문에 같은 데이터가 여러 파일에 중복되어 저장될 수 있다. 이러한 방식은 공간의 낭비와 데이터 일관성, 무결성을 유지하기 어렵게 한다. 응용 프로그램이 데이터 파일에 종속적이다. 응용 프로그램에서 파일에 직접 접근하여 데이터를 처리해야 하므로 데이터 파일의 구조가 바뀌면 응용 프로그램도 그에..
[데이터베이스 개론] Chapter1 - 데이터베이스 기본 개념
·
Database
데이터와 정보 데이터는 현실 세계에서 관찰한 어떤 사실이나 값이며 정보는 이러한 데이터를 의미 있게 활용할 수 있도록 체계적으로 가공한 것이다. 데이터로부터 정보를 추출하는 과정이나 방법을 정보 처리라고 한다. 그렇다면 의미 있는 정보를 얻으려면 어떻게 해야 할까? 먼저 의미 있는 데이터를 많이 확보해야 하고 이러한 데이터를 필요할 때 언제든 다시 사용할 수 있게 저장해야 한다. 이러한 역할을 하는 것을 정보 시스템이라 하며 정보 시스템에서 핵심적인 요소가 데이터베이스이다. 데이터베이스의 정의와 특징 데이터베이스의 정의 데이터베이스는 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합하여 데이터를 저장한 운영 데이터의 집합이다. 공유 데이터 : 데이터베이스는 특정 조직의 여러 사용자가 함께 소유하..
2022 회고
·
회고
2022년 상반기2021년 8월 국비학원을 마치고 긴 방황이 시작 되었다.나름대로 열심히 만든 포트폴리오로 10곳이 넘는 기업에 지원했지만 코딩테스트 전형에서 한번도 통과하지 못했었다.이때부터 코딩 테스트 준비에 대부분의 시간을 쏟았다.프로그래머스 1단계 문제부터 시작해서 무작정 문제를 풀었는데 너무 어려웠고 가장 쉬운 문제도 풀지 못했었다.그떄는 내가 자료구조와 알고리즘을 몰라서 코딩 테스트에 어려움을 느낀다고 생각했고, 여러 강의를 듣기 시작했었다.그런데 아무리 강의를 듣고 문제를 풀어도 실력은 늘지 않는것 같았고코딩 테스트 문제만 붙잡고 있다보니 지쳤던것 같다. 그때 마침 개발과는 상관없지만 외국에서 진행하는 프로젝트에 참여 할 기회를 얻어서 2달간 외국에서 일하게 되었다.낮에는 일하고 밤에는 코딩..
(Java) 백준 15652 - N과 M (4)
·
코딩 테스트
문제 분류가 백트래킹으로 되어 있지만 그냥 재귀를 생각하면서 풀었다. 재귀 탈출문이 실행되고 리턴되면 idx++로 증가시켜 조건에 맞게 문자열을 만들었는데 이걸 백트래킹이라고 볼 수 있는지는 잘 모르겠다... 로직 스트림을 사용하기 위해서 입력을 int 배열을 이용해서 받았는데 , 사실 n, m 변수 하나씩 만들어서 받는 게 편할 수도 있다. n과 m을 받았다면 재귀 함수를 호출해서 문자열 조합을 만든다. 재귀 호출마다 depth를 증가시키고 depth가 m과 같으면 substring을 사용해서 문자열 앞 공백을 제거하고 문자열을 stringBuilder에 추가하고 리턴한다. 문제 조건에 맞추기 위해서 리턴후에는 idx를 증가시키고 모든 조합이 나올 때까지 재귀 호출을 반복하면 된다. 최종 코드 impo..
(Java) 프로그래머스 - 둘만의 암호
·
코딩 테스트
문제 해결 로직은 쉬웠지만 깔끔하게 풀지는 못한 것 같다. 스트림을 이용하면 조금 더 보기 좋게 코드를 작성할 수 있을 것 같은데 아직 스트림이 익숙하지 않다.. 로직 제시된 String을 char 배열로 바꾸고 contains() 메서드를 이용하기 위해 skipArr을 list에 넣어준다. arr 배열을 순회하며 문자를 다음 문자로 바꾸어 'z' 이후 문자인지 확인하여 이후 문자라면 'a'로 바꿔준다. 그리고 list에 넘어가야할 문자가 있는지 확인한다. 바꾼 문자가 list에 있다면 cnt를 증가시키지 않고 넘어가고, 없다면 cnt를 증가시켜 cnt가 index와 같아질 때까지 문자를 바꾼다. 마지막으로 바꾼 문자를 StringBuilder에 추가하면 된다. 최종 코드 import java.util...
(Java) 프로그래머스 - 카드 뭉치
·
코딩 테스트
마스터즈 코스를 진행하며 CS 공부하기에도 시간이 너무 부족하지만 하루에 한 문제씩 알고리즘 문제 풀기를 다시 시작하려고 한다. 요즘 프로그래머스에 문제들이 많이 추가되고 있다. 예전에 프로그래머스 2단계 문제까지 전부 다 풀었었는데 추가된 문제가 많아서 전부 다 풀어보고 3단계로 가야겠다! 로직 사실 문제가 너무 간단해서 로직을 크게 생각하지 않았다. goal 배열을 순회하면서 cards1 배열과 cards2 배열을 동시에 탐색하면 된다. 각 cards 배열의 인덱스를 만들고 배열의 크기를 벗어나지 않으면서 goal 문자와 같으면 인덱스를 추가하고 다음 문자로 넘어간다. 만약 어떤 cards 배열의 어떤 문자도 일치하지 않으면 바로 No를 리턴해서 탐색을 종료한다. 모든 탐색이 종료되면 문자열을 만들 ..