본문 바로가기
반응형

코딩테스트27

[코딩테스트] Java - 정렬(Sort) 정렬- 정렬(sort): 사용자가 정의한 순서로 데이터를 나열하는 것- 정렬이 필요한 이유: 원하는 데이터를 쉽게 찾기 위함- 정렬의 분류: 비교 정렬(comparison sort)와 비비교 정렬(non-comparison sort) (버블 정렬)- 버블 정렬(bubble sort): - 시간복잡도:  (선택 정렬)- 선택 정렬(selection sort): - 시간복잡도:  (삽입 정렬)- 삽입 정렬(insertion sort): 데이터의 전체 영역에서 정렬된 영역과 정렬되지 않은 영역을 나누고 정렬되지 않은 영역의 값을 정렬된 위치로 놓으면서 정렬- 시간복잡도: 최악 O(N^2) 최선 O(N)1. 최초에 정렬된 영역은 왼쪽 1개, 정렬되지 않는 영역을 나머지로 함. 현재 위치는 0으로 설정2. 현재 .. 2025. 2. 11.
[코딩테스트] Java - 백트래킹 백트래킹- 완전탐색: dfs, bfs처럼 데이터를 전부 확인하는 방법- 백트래킹(backtracking): 가능성이 없는 곳에서는 되돌아가고, 가능성이 있는 곳을 탐색하는 알고리즘- 유망함수(promising function): 특정 조건을 정하는 함수 (백트래킹 풀이법)1. 유효한 해의 집합을 정의2. 정의한 집합을 그래프로 표현3. 유망함수 정의4. 백트래킹을 통한 해 탐색 (부분 집합 합)- 부분 집합 합(sum of subset): 1부터 N까지 숫자르 조합했을 때 합이 K가 되는 조합을 찾는 문제- 유망함수1: 현재 조합으로 합이 K일 경우 탐색 중지- 유망함수2: 해당 숫자를 조합하여 합이 K 이상이 되면 탐색 중지 (N-Queen)- N-Queen: 체스의 퀸을 N x N 체스판에 N개 배치.. 2025. 2. 11.
[코딩테스트] Java - 동적계획법(Dynamic Programming) 동적계획법- 동적계획법: 작은 부분 문제들을 해결하고 이를 활용하여 전체 문제를 해결하는 방법- 동적계획법의 조건: 최적 부분 구조 + 중복 부분 문제+) 최적 부분 구조: 작은 문제의 해결책의 합으로 큰 문제를 해결할 수 있는 구조+) 중복 부분 문제: 큰 문제를 나누었을 때 작은 문제가 여러 개 반복되는 문제 (동적계획법 풀이법)- 문제를 해결하는 해가 있다고 가정- 종료 조건을 설정- 점화식을 세움 (동적계획법 주요 기법)- 재귀- 반복문: 재귀문 대신 사용- 메모이제이션: 재귀 호출의 횟수를 줄임 (최장 증가 부분 수열)- 부분 수열: 주어진 수열 중 일부를 뽑아 새로 만든 수열. 각각의 원소는 전후 관계를 유지- 최장 증가 부분 수열(Long Increasing Subsequence): 부분 수.. 2025. 2. 11.
[코딩테스트] Java - 탐욕법(Greedy) 탐욕법- 탐욕법(greedy): 문제 해결 과정에서 결정 순간마다 눈앞에 보이는 최선의 선택을 하며 선택을 번복하지 않음. 부분적으로 최적해를 구함- 그리디의 최적해 보장 조건: 최적 부분 구조 + 그리디 선택 속성+) 최적 부분 구조(optimal substructure): 부분해를 푸는 과정이 최적해를 구하는 과정과 일치+) 그리디 선택 속성(greedy selection property): 선택 과정이 다른과정에 영향을 주지 않음 (그리디 풀이법)- 지역의 최적해 구하기- 최적 부분 구조를 만족하는지 확인- 그리디 선택 속성을 만족하는지 확인 (최소 신장 트리)- 신장 트리(spanning tree): 모든 정점이 간선으로 연결되어 있고 간선 개수가 정점 개수보다 하나 적은 그래프- 최소 신장 트리.. 2025. 2. 11.
[코딩테스트] Java - 시뮬레이션 시뮬레이션- 시뮬레이션: 문제에서 주어진 상황을 이해하고 이를 코드로 구현하는 과정. 구현에 중점 (시뮬레이션 풀이법)- 하나의 문제를 여러개로 분리- 예외처리시 독립함수로 구현 (시뮬레이션 주요 기법)- 행렬 연산: 덧셈, 뺄셈, 곱셈- 전치행렬- 좌표 연산: 2차원 행렬 사용. 방향 벡터(offset 사용)- 대칭연산: 좌우대칭, 상하대칭- 회전연산(90도): 시계방향, 반시계방향 예제(배열 뒤집기)- 좌우 뒤집기: A[i][j] = A[i][(N-1)-j]- 상하 뒤집기: A[i][j] = A[(N-1)-i][j] - 입력: arr(2차원 배열)- 출력: 2차원 배열더보기class Solution { private static int[][] solution(int[][] arr, int n) .. 2025. 2. 11.
[코딩테스트] Softeer 입문 1. Softeer 접속- https://softeer.ai/ 2. 회원가입 및 로그인- 우측 상단의 로그인/회원가입 클릭- 로그인 페이지에서 회원가입 클릭- 회원가입 절차에 따라 진행 3. Softeer 로그인- Softeer 로그인 페이지에서 아이디와 비밀번호를 입력하여 로그인 4. 코딩테스트 문제- Softeer 메인 페이지의 상단 탭의 Challenge의 연습문제 클릭- 연습문제 페이지의 우측 상단 필터보기에서 난이도별 문제 확인 5. 문제 풀기- 중앙에서 문제 풀이에 사용할 프로그래밍 언어 설정- 공식문서 버튼을 클릭하여 참고 언어별 주요 클래스와 메서드 참고- 좌측 문제를 보고 문제에 맞게 코드 작성- 코드 실행 버튼은 테스트 케이스 추가하기에 추가된 예시를 확인- 제출 버튼을 클릭하여 최종 .. 2025. 2. 9.
[코딩테스트] Programmers 입문 1. 프로그래머스 접속- https://programmers.co.kr/2. 회원가입 및 로그인  3. 상위 네비게이션의 코딩테스트 연습 탭 클릭4. 모든 문제 탭 클릭 후 난이도/언어 지정하여 문제 풀기- 코딩 기초 트레이닝 + 코딩 테스트 입문 == Level0  5. 문제 풀기- 우측 상단(C++ 위치)을 클릭하여 해당 언어 서낵- 좌측 문제를 보고 문제에 맞게 코드 작성- 코드 실행 버튼은 테스트 케이스 추가하기에 추가된 예시를 확인- 제출 후 채점하기는 문제풀이를 제출한 뒤 여러가지 케이스에 맞는지 채점후 통과 여부 표시- 통과하게 되면 다른 사람의 풀이를 무료로 볼 수 있음, 그렇지 않으면 점수를 제공하여 확인하여야함 (인터넷 검색시 문제이름 프로그래머스 언어로 검색하면 정답 및 해설이 있음).. 2025. 2. 9.
[코딩테스트] JavaScript - 참고자료 자료구조/알고리즘- [교재] Introduction To Algorithms(Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein) 코딩테스트- [교재] 코딩 테스트 합격자 되기: 자바스크립트 편(이선협)- [강의] JavaScript 알고리즘 100일 챌린지(제주코딩베이스캠프) 코딩테스트 사이트- [Site] Programmers- [Site] Baekjoon Online Judge(Solved.ac)- [Site] LeetCode 2025. 2. 9.
[코딩테스트] Java - 알고리즘 추천 문제 백트래킹더보기문제(문제번호)문제 링크풀이피로도(87946)문제 링크풀이N-Queen(12952)문제 링크풀이양궁 대회(92342)문제 링크풀이외벽 점검(60062)문제 링크풀이사라지는 발판(92345)문제 링크풀이모음사전(84512)문제 링크풀이정렬더보기문제(문제번호)문제 링크풀이문자열 내 마음대로 정렬하기(12915)문제 링크풀이정수 내림차순으로 배치하기(12933)문제 링크풀이K번째 수(42748)문제 링크풀이가장 큰 수(42746)문제 링크풀이튜플(64065)문제 링크풀이지형 이동(62050)문제 링크풀이전화번호 목록(42577)문제 링크풀이파일명 정렬(17686)문제 링크풀이H-Index(42747)문제 링크풀이시뮬레이션더보기문제(문제번호)문제 링크풀이이진 변환 반복하기(70129)문제 링크풀이롤.. 2025. 2. 9.
[코딩테스트] Java - 알고리즘 백트래킹코드더보기더보기ㅇ 예시더보기더보기ㅇ 정렬코드더보기더보기ㅇ 예시더보기더보기ㅇ 시뮬레이션코드더보기더보기ㅇ 예시더보기더보기ㅇ 동적계획법코드더보기더보기ㅇ 예시더보기더보기ㅇ 그리디코드더보기더보기ㅇ 예시더보기더보기ㅇ 2025. 2. 9.
반응형