분류 전체보기 289

[프로그래머스] 이웃한 칸

문제https://school.programmers.co.kr/learn/courses/30/lessons/250125?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr생각BFS 알고리즘의 기초라고 생각했다.구현 방향이 그대로 문제에 제시되어있어서 어렵지 않게 풀 수 있었다.코드public class Main { public static void main(String[] args) { System.out.println(solution(new String[][]{{"blue", "red", "orange", "red"} ..

Dev/Algorithm 2024.05.18

[프로그래머스] 개인정보 수집 유효기간

문제https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 생각 1. terms를 맵으로 변환한다.  2. privacies 를 순회하며 해당 일자의 파기일자를 구한다.  3. 파괴해야한다면 큐에 넣기코드힌트를 좀 봤다.28일로 고정되어있는게 힌트고 자칫 함정에 빠질 수 있는 문제였다. (이미 함정에 빠졌었다.)년을 먼저 구한다. -> 더해서 12월이 되는경우 년도를 더하면 안된다.월을 구할 때 -1 해야 한다 등 어처구니 없는 행위들을 생각하느라 시간..

Dev/Algorithm 2024.05.17

[프로그래머스] 가장 많이 받은 선물

문제https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr생각1. 주고받은거 배열 인덱스가 있으니,, 이차원 배열을 만들어 누가 누구한테 얼만큼 줬는지 기록하기 2. 순차 배열을 순회하며 서로 선물을 받았는가? 안받았는가 체크 2.1 받았다면 이차원배열 더 높은 사람이 결과 ++  2.2 주고 받은적 없거나, 정확히 같은 수로 선물 주고받았을 경우 2.2.1 선물지수로 판단하기  - 가로 합 : 준 선물, 세로 합 : 받은 선물 = 가로합 - 세로 합 ..

Dev/Algorithm 2024.05.17

[프로그래머스] 붕대 감기

문제https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr생각마지막 공격 받은 시점까지 순회하면서공격을 안받았다면 : 연속 성공 시간 증가, 체력 증가, 최대 체력 관리,공격 받았다면 : 연속 성공 시간 초기화, 체력 감소, 공격 idx 증가, 죽음 관리더 고려할 생각연속 성공 최대 시 다시 0 으로가는걸 고려 못함.예제 코드를 더 잘 보자.코드public class Main { public static void main(String[] args)..

Dev/Algorithm 2024.05.17

무조건 합격하는 암기의 기술 책 서평

평소에 교보문고 판교점을 자주 방문하곤 한다. 서점을 둘러보다 이 책을 발견하고, 정처기 필기 시험을 준비하고 있었던 나에게 변호사 시험 공부법에 대한 궁금증이 생겨 구매하게 되었다. 해당 책은 저자가 자신의 공부법 뿐 아니라 뇌과학 이론을 통해 암기를 확실하게 하는 방법을 설명하고 있다. 암기에 필요한 단계(인지 > 이해 > 암기), 여섯 가지 암기 방법, 재현, 목적 등 자신만의 암기법에 대한 내용을 다루고 있다. 책을 읽기 전 나는 색칠공부가 암기의 최선이라고 생각했다. 하지만 조직화, 이미지화, 정교화, 맥락화, 변환, 시연 등을 통해 구조적으로 문맥을 파악하고 이해한 후에 암기하는 것이 최고의 암기법임을 알게 되었다. 특히 책을 읽으면서도 책의 내용이 내가 언제든지 꺼내어 쓸 수 있게 명쾌하게 ..

일상/책 후기 2023.09.05

[WEB] 로그인 클라이언트 IP 를 정확하게 알기 (XFF)

문제 인식 기본적으로 HttpServletRequest 를 이용하여 객체 내 함수로 클라이언트 IP를 가져올 수 있다. 기본 클라이언트 IP 를 가져오는 방법은 아래와 같다. import javax.servlet.http.HttpServletRequest; request.getRemoteAddr(); 하지만 이 코드를 실 운영에서 이용할 경우 문제가 있다. 대부분의 회사에서는 보안 관련 방화벽이나 클라우드로 운영하는 경우가 많은데, 이 경우 클라이언트의 원 IP주소를 가져올 수 없다. 클라이언트가 요청을 하면 Web Server에서 프록시나 로드 밸런서를 통해 WAS에 요청하기 때문에 프록시나 로드 밸런서의 IP 주소를 반환하게 된다. 그래서 원 IP를 못가져오는 현상이 발생한다. 해결 아래와 같이 샘플..

Dev 2023.09.01

정보처리기사 필기 합격 수기 - 전공자, 직장인 학습법

합격 후기 및 공부법 정보처리기사 필기시험에 합격했습니다👏👏 가채점으로 나오긴 했지만 안정권이기에 합격 포스팅을 작성하게 되었습니다. 직장인으로서 업무와 병행하며 공부하였고, 공부하며 제가 느낀 점을 몇 가지 공유해보고자 합니다. *참고 : 필기 합격 기준은 파트별 40점 이상, 과목 평균 60점 이상 두 가지를 만족하면 합격입니다* 제가 사용한 공부방법 우선 저는 직장인이고, 전공자임을 알려드립니다. (IT 직무 현업 근무중) 책은 가장 유명하다고 하는 이기적으로 공부했습니다. https://www.yes24.com/Product/Goods/113794518 2023 이기적 정보처리기사 필기 절대족보 - YES24 본 도서는 정보처리기사기사 필기시험을 준비하는 분들이 효과적으로 시험에 대비할 수 있도록..

일상 2023.07.16

시간 복잡도에 대하여

시간 복잡도란? 빅-오 표기법 최악의 경우 걸리는 시간 시간 복잡도 그래프 이진탐색 O(logN) 선형탐색 O(N) 정렬 O(N logN) 조합 O(N^2) 순열 O(N!) 입력 데이터 개수별 사용 가능한 시간 복잡도 알고리즘 N 값에 따라 알고리즘 적용 시 최대 1억번이 안넘어야 한다. 1억이 넘는다 ? → 빨리 다른 알고리즘을 찾아봐야한다. 잘못된 문제풀이 문제 확인 → 풀이 고안 & 작성→ 제출 → 완료 올바른 물제풀이 문제 확인 → 풀이 고안 → 효율성 체크 → 풀이 작성 → 제출 → 완료문제풀이 방법론 시간 복잡도 계산하기 어림짐작하기 >> 반복문의 횟수를 계산해보자. 시간 복잡도를 줄이는 방법 정렬된 배열 arr에서 특정 원소의 위치를 찾을 때 전체 순회O(N) → 이진탐색 O(logN) 배열..

알고리즘 2023.07.10

코딩 테스트 준비하기 전에 봐야할 글

코딩테스트 개요 확인 및 주의사항 코딩테스트란? 지원자가 알고있는 자료 구조와 알고리즘 등을 활용 → 문제해결능력을 평가하는 시험 제한 시간 내 푼 문제 개수 + 시간으로 평가 → 빠르고 정확하게 풀어야 한다. 보는 이유 문제해결과정 주어진 문제를 정확하게 파악하는것이 중요 요구하는 방향으로 문제를 해결하려고 하는가 똑같은 결과지만 빠르고 효율적으로 코드의 실행 시간에도 제약이 있다. → 빅오를 배우자. 개발자 실력 = 막연한 구현 (x) 효율적 설계 (o) 기능 구현은 걍 필수다. 빠르고 많이 (X) → 정확하고 효율적으로 (O) 코딩 & 디버깅 잘 짠 코드란? 가독성 + 효율성 가독성 : 코드 역할에 집중 → 메서드나 클래스로 분해하자. 효율성 : 메서드 → 사칙연산으로 해결 흔히 하는 실수 충분한 ..

알고리즘 2023.07.05

[비사이드] 비사이드 후기 - 중간 회고

비사이드 11기에 참여하여 어느덧 10주차 개발일지를 작성하게 되었고, 중간 회고를 한번 해볼 필요성을 느껴 중간 회고록을 작성해 보았다. 나에겐 너무 의미있었던 프로젝트였고, 마무리까지 잘 되어서 끝까지 좋은 경험으로 남았으면 하는 마음에 이 포스팅을 작성하게 되었다. 비사이드 시작하게된 동기 내가 처음으로 사이드 프로젝트에 관심을 가졌던 시기는 웹에 어느정도 익숙해지기 시작하면서부터였다. 그 때 당시의 나는 JPA와 Spring Boot에 대해 공부하고 간단히 프로젝트를 만들 수 있을 정도의 실력이 된다고 생각했었는데, 과정이 너무나도 재미있었다. 또한, 빠른 시일 내에 더 멋진 백엔드 개발자가 되는 것이 꿈인 나에게 멋진 포토폴리오를 만들고 싶다는 생각이 들기 시작했을 때이다. 사람은 보고싶은 것만..

Dev/Bside 2022.08.26