본문 바로가기

전체 글144

[면접을 위한 CS 전공지식 노트][자료구조] Array(배열)와 ArrayList 0. 개요 JAVA에서는 배열을 직접 사용할 수도 있고, 배열을 사용하기 쉽게 구현해놓은 ArrayList가 존재한다. 자료구조를 공부하면서 이 부분에 대해서 정리하여 기록하고자 이 글을 작성한다. 1. Array 배열이라는 자료구조의 특징을 살펴보면, 1. 선형적인 자료구조이다. 2. 데이터를 일렬로 늘여놓은 형태이다. 3. 물리적으로도 데이터가 메모리에 연속적으로 저장된다는 특징을 가지고 있다. 4. 같은 데이터 타입만을 저장할 수 있다. -> 다른 데이터 타입을 저장하고자 한다면 class 선언을 하여 객체를 이용하여 사용할 수 있다. 등을 이야기 해볼 수 있겠다. Java를 이용해 프로그래밍을 하는 경우 종종 배열을 직접 사용하는 경우도 있지만, 대부분의 경우 배열을 사용하기 쉽게 구현해놓은 Ar.. 2023. 8. 2.
[pg] 프로그래머스 신규아이디 추천 1. 문제 정의 유저가 신규아이디를 만들 때 회사에서 정한 규칙에 맞지 않는다면 그 규칙에 맞게 수정해주어야 하는 문제. 처음에 String값이 매개변수로 넘어오며, 규칙은 총 7단계이다. 1. 소문자로 통일 2. 소문자, 숫자, 빼기, 언더바, 마침표를 제외한 모든 문자 제거 3. ..으로 연속된 부분있으면 .으로 치환 4. 마침표가 처음이나 끝에 존재하면 둘다 제거 5. 이 때 빈문자열이면 a 대입 6. 현재 16자 이상이면 15자까지만 남기고 나머지 제거 7. 현재 2자 이하라면 3자까지 반복해서 맨 마지막 글자를 추가 2. 나의 시도 처음에는 문제에 있는 순서를 바꿔서 풀려고 진행했는데, 잘 풀리지 않아서, 다시 문제가 요구하는 단계별로 로직을 구성하였더니, 모든 테스트케이스가 통과되었다. 문제에.. 2023. 8. 1.
[pg] 프로그래머스 숫자 문자열과 영단어 1. 문제 정의 이번 문제는 굉장히 쉽다. 문자열안에 영어로 적혀있는 숫자를 아라비아 숫자로 변환해주기만 하면 된다. ex) "zero12" -> "012" 2. 나의 시도 문제를 보고 맵이 떠올라 맵을 만들고 맵을 순회하면서 문자열에 있는 알파벳을 아라비아숫자로 변경하였다. 3. code /** * 프로그래머스 LV1 * 숫자 문자열과 영단어 * 접근 방법: 문자열과 숫자를 map으로 만들고, map을 순회 하면서 key값에 해당하는 문자열은 숫자로 바꾸는 형식으로 진행. */ public class Solution { public int solution(String s) { Map translator = new HashMap(); translator.put("zero","0"); translator... 2023. 8. 1.
[면접을 위한 CS 전공지식 노트][자료구조] 자료구조에 따른 시간 복잡도 0. 개요 프로그래밍을 하면서 알고리즘의 효율을 측정할 수 있는 지표로는 크게 시간 복잡도와 공간복잡도가 있다. 알고리즘이 메모리를 얼마나 쓰는지 나타내는 것이 공간복잡도이고, 알고리즘이 문제를 해결하는데 걸리는 시간이 시간복잡도 이다. 과거에 하드웨어의 스펙이 좋지 않았을 적에는 이 두 가지 모두를 고려하면서 프로그래밍을 진행했지만, 최근 하드웨어의 성능이 좋아지고 나서부터는 공간복잡도 보다는 시간복잡도를 고려하여 프로그래밍을 하는 추세인 것 같다. 또한 시간복잡도와 공간복잡도는 트레이드오프 관계에 있다. 최근은 하드웨어 성능이 좋아짐에 따라 시간복잡도를 기준으로 알고리즘의 효율을 많이 측정하는 추세다. 그러므로 이 글에서는 공간복잡도 보다는 자료구조와 시간복잡도에 대한 것을 중점적으로 정리해 볼 계획.. 2023. 7. 31.
[pg] 프로그래머스 신고 결과 받기 0. 개요 이 문제는 이전에 자료구조 지식과 알고리즘 지식이 없다시피 하던 시절 무작정 도전해서 풀어봤던 문제다. 그때에는 맵을 무려 3개나 사용해서 간신히 간신히 풀었던 기억이 있는데, 이번에 코테를 준비하면서 다시 한번 풀어보게 되었다. 나도 쥐똥만큼은 성장한 것인지, 문제를 보고 얼마 지나지 않아 해결방법이 떠올랐다. Person이라는 객체를 만들어서 해결하면 좋겠다고 생각하고, 코딩을 시작했다. 1. 문제 정의 이 문제는 유저들의 유저ID가 있고, 그 유저가 다른 유저를 신고했을 경우 신고당한 유저의 신고횟수가 증가하여(여러번 신고할시에는 1번만 신고한 것으로 간주된다.), 신고횟수가 최종적으로 메서드에 k라는 매개변수로 주어지는 값과 같거나 더 크면 그 유저를 신고한 유저들에게 결과 메일이 발송.. 2023. 7. 27.
[pg] 프로그래머스 성격 유형 검사하기 0. 개요 자료구조/ 알고리즘을 공부하면서 코딩테스트 문제를 푸니 뭔가 시너지가 나는 느낌이다. (아닐수도?) 암튼 자료구조도 선형구조 부터 시작해서 정리해야하고, java도 수업시간에 들은 것들 중에 좀 깊게 정리해야 될 부분이 있지만, 하루하루 버티기는 가능하지만, 뭔가 여유롭게 전부 다 하기는 어려운 느낌이라 귀찬은 건 미뤄두고, 코테 문제 해결이나 꾸준히 작성해보려한다. 이대로라면 정리는 쌓이고 쌓여 산 처럼 되어버리게찌... 쉣.. 그래도 역시 프로그래밍은 하면 할 수록 느는거 같아 성취감을 느낀다. 프로그래밍이 이래서 좋다. 적성에 안 맞으면 해도해도 안 느는것도 있는데.. 이건 늘긴하니까... 1. 문제 정의 오늘의 문제는 다음과 같다. mbti와 같은 성격유형 검사를 위해서 각 문항마다 1.. 2023. 7. 26.
[pg] 프로그래머스 개인정보 수집 유효기간 0. 개요 그룹 스터디에서 코딩테스트 준비를 하기 위해서 여러가지 의견들이 있었지만 결국에는 프로그래머스 문제를 다 풀어보는 것으로 결정났다. 그래서 레벨 1에서는 카카오 기출, 그리고 레벨 2부터는 문제를 전부 풀어보는 것을 목표로 진행할 예정이다. 1. 문제 정의 오늘의 문제를 요약하자면 다음과 같다. 개인정보 수집에 동의한 날짜가 있고, 각 약관마다 유효기간이 다르다. (6달, 12달, 3달 등) 그래서 오늘 날짜를 기준으로 만료된 개인정보를 리턴하는 문제이다. 주어지는 것은 1. 약관 타입과 약관 유효기간이 담긴 배열 2. 개인정보 번호, 약관타입, 개인정보 동의날짜 (yyyy.MM.dd)가 담긴 배열 3. 오늘 날짜 가 주어진다. 주의해야할 것은 각 월을 28일 기준으로 계산된다는 점이다. 2... 2023. 7. 25.
[회고] Weekly 회고 7월 3주 이번 주는 부트캠프를 시작하고 2주차가 되는 주이다. 회사를 다닐 적에는 집에서 공부만 하면 엄청 빠르게 성장할 것만 같았지만, 또 그렇지도 않은 것 같다. 그래도 이번 주의 성과라고 할 수 있는 것은, 저번 주에 마무리 하지 못했던 Git에 대해서 마무리 지을수 있었다는 것이다. 기본적인 학습을 모두 마치고, 생활코딩의 지옥 Git 시리즈도 끝까지 완주했다. 덕분에 .git 파일 안에서 어떻게 저장이 되는지 조금은 이해가 되는 듯 하다. 인간은 망각의 동물이기 때문에 이 기억도 언젠가는 잊혀지겠지만, 그래도 내가 이해한 부분에 대해서 블로그에 정리를 해 놓은 부분이 있으니 나중에 다시보면 기억이 나겠지. 그리고 앞으로의 큰 과제 중 하나로 자료구조와 알고리즘이 떠올랐는데, 일단 내가 자료구조와 알고리즘.. 2023. 7. 23.
[pg] 프로그래머스 주식가격 0. 개요 최근 코딩 테스트 문제를 다시 풀어보면서 자료구조/알고리즘의 학습 필요성을 느끼고 다시 공부 중이다. 이전에는 알고리즘 배우고 들입다 문제풀고, 좌절하고 반복이었지만, 아직 시간이 많이 남은 만큼 차근차근 하나하나 해볼 생각이다. 너무 급하게 서두르지 않는게 목표다. 1. 문제 정의 주식 가격이 떨어질 때 까지의 시간을 구하는 문제이다. 초마다의 주식가격이 배열로 주어지고, 배열을 순회하면서 현재 인덱스에 존재하는 data 값보다 미만으로 떨어지는 시점의 시간을 구하는 문제이다. 주어지는 것: 각 초마다의 주식가격 output: 현재 인덱스의 값보다 가격이 미만인 값이 되기 까지의 시간(초)을 담은 배열. 2. 나의시도 스택/큐에 속해 있는 문제라고 해서 스택이나 큐로 풀으려고 생각했지만, 문.. 2023. 7. 23.