/algorithm-study-java

알고리즘 스터디

Primary LanguageJava

자바 알고리즘 스터디

규칙

  • 목적: 기업 코딩테스트 대비, 알고리즘 실력 향상 및 삼성 코딩테스트 A형 통과
  • 스터디 일정: 주 1회 진행
    • 매주 목요일 오후 10시 시작
    • 약 1시간 ~ 2시간 소요
  • 스터디 당일 각자 풀었던 문제를 설명하고 서로의 코드를 리뷰
  • 스터디 진행 후 다음에 풀 문제를 정하고 디스코드에 공지
  • 파일 업로드 규칙 : N주차(폴더) / 문제플랫폼_문제번호 (폴더) / 문제플랫폼_문제번호_문제이름_이름.java (파일) (Ex. BOJ_2577_숫자의 개수_한재윤.java)
  • 커밋메세지 규칙 : Solve: 문제플랫폼_문제번호 EX)Solve: BOJ_2577, Solve: SWEA_1475
  • 매주 스터디 일정 전까지 문제 풀이 후 원격 저장소에 업로드

스터디원

  • 김명준
  • 김성태
  • 조원희
  • 한재윤

스터디 일정

13주차(11/10) (목)

Programmers - 괄호변환 - 문자열
Programmers - 프렌즈4블록 - 문자열

12주차(11/03) (목)

Programmers - 전화번호 목록 - 구현
Programmers - 모음사전 - 문자열

11주차(10/27) (목)

Programmers - 최댓값과 최솟값 - 구현
Programmers - JadenCase 문자열 만들기 - 문자열

(10/13) (목) - 역량테스트 대비 개인 공부

10주차(10/06) (목)

SWEA-2383 점심 식사시간 - 구현
SWEA-2477 차량 정비소 - 구현

9주차(09/28) (목)

SWEA-4014 활주로 건설 - 구현
SWEA-2112 보호 필름 - 구현

8주차(09/22) (목)

SWEA-5656 벽돌 깨기 - 구현
SWEA-2105 디저트 카페 - 구현

7주차(09/15) (목)

SWEA-2115 벌꿀채취 - 구현
SWEA-5658 보물상자 비밀번호 - 구현

6주차(09/08) (목)

SWEA-5653 줄기세포배양 - 구현

(08/30) (화) - 역량테스트 대비 개인 공부

5주차(08/23) (화)

SWEA-1227 미로2 - 구현 [Dif4]
SWEA-2117 홈 방범 서비스 - 구현
SWEA-2819 격자판의 숫자 이어붙이기 - 구현 [Dif4]
SWEA-8382 방향 전환 - 구현 [Dif4]
BOJ-16236 아기상어 - 구현 [G3]

4주차(08/18) (목)

BOJ-16637 괄호 추가하기 - 구현 [G4]
BOJ-3190 뱀 - 구현 [G4]
BOJ-1074 Z - 분할정복 [S1]

4주차(08/16) (화)

BOJ-17136 색종이 붙이기 - 백트래킹 [G2]
BOJ-2573 빙산 - BFS, DFS [G4]
BOJ-13460 구슬탈출2 - BFS, DFS, 구현 [G1]
BOJ-15686 치킨배달 - 백트래킹, 구현 [G5]
BOJ-16173 점프왕 쩰리 - BFS, DFS, 구현 [S5]
BOJ-1012 유기농 배추 - BFS, DFS [S2]

3주차 (08/11) (목)

BOJ-7569 토마토 - 그래프 탐색 [G5]
BOJ-2170 선 긋기 - 그리디 [G5]

3주차 (08/09) (화)

SWEA-6853 직사각형과 점 - 구현 [Diff3]
BOJ-1158 요세푸스 문제 - 연결리스트 [S4]
BOJ-1991 트리 순회 - 트리 [S1]
BOJ-15666 N과 M (12) - 순열, 조합 [S2]

2주차 (08/04) (목)

BOJ-1874 스택 수열 - 스택 [S2]
BOJ-10799 쇠막대기 - 스택의 활용 [S3]
BOJ-1927 최소 힙 - 우선순위 큐 [S2]

2주차 (08/02) (화)

BOJ-2164 카드2 - 큐 [S4]
BOJ-5430 AC - 덱 [G5]

1주차 (07/28) (목)

BOJ-2577 숫자의 개수 - 배열 [B2]
BOJ-1475 방 번호 - 배열 [S5]
BOJ-3273 두 수의 합 - 배열 [S3]



바킹독 알고리즘 문제집

번호 주제
0x00 오리엔테이션 (문제집 X)
0x01 기초 코드 작성 요령 I (문제집 X)
0x02 기초 코드 작성 요령 II
0x03 배열
0x04 연결 리스트
0x05 스택
0x06
0x07
0x08 스택의 활용(수식의 괄호 쌍)
0x09 BFS
0x0A DFS (문제집 X)
0x0B 재귀
0x0C 백트래킹
0x0D 시뮬레이션
0x0E 정렬 I
0x0F 정렬 II
0x10 다이나믹 프로그래밍
0x11 그리디
0x12 수학
0x13 이분탐색
0x14 투 포인터
0x15 해시
0x16 이진 검색 트리
0x17 우선순위 큐
0x18 그래프
0x19 트리
0x1A 위상 정렬
0x1B 최소 신장 트리
0x1C 플로이드 알고리즘
0x1D 다익스트라 알고리즘

그 외 문제 추천

문제집 설명

출처

일부 단원을 제외하면 각 단원에 대응되는 문제집이 있습니다. 설령 이론을 잘 이해했더라도 문제를 풀어내지 못한다면 아무런 의미가 없기 때문에 반드시 문제를 많이 풀어보셔야 합니다.

문제집의 문제는

연습 문제 : 강의 내에서 같이 풀어본 문제

기본 문제 : 특별한 응용 없이 강의에서 다룬 내용을 바탕으로 해결할 수 있는 문제

응용 문제 : 약간의 응용이 필요해서 난이도가 있는 문제

로 분류됩니다. 기본 문제, 응용 문제 중에서 특히 풀어보길 권장하는 문제는 ✔으로 표시를 해두었습니다.

먼저 강의 내에 있는 제 코드를 참고하지 않고 연습 문제를 풀어봅니다. 그 후에 기본 문제✔까지는 풀어보시는걸 강력하게 권장합니다. 기본 문제✔를 풀 때 아예 풀이를 모르겠다면 아직 학습이 부족한 상태이니 강의를 다시 확인하실 필요가 있습니다.

기본 문제✔를 풀 때 풀이는 떠올릴 수 있지만 구현에서 문제가 생기는 경우라면 정답 코드를 참고해서 구현법을 익힌 후 다른 기본 문제를 풀이 참고 없이 풀면서 구현력을 기르시는걸 추천드립니다.

기본 문제✔를 풀 때 큰 어려움이 없다면 응용 문제✔도 확인해서 문제 해결 능력을 길러보시는걸 추천드립니다. 응용 문제✔ 분류의 문제들은 다소 발상이 어렵거나 새로운 테크닉을 필요로 할 수 있기 때문에 30분-1시간 정도 고민한 후에도 풀이를 모르겠다면 정답 코드나 풀이를 확인해도 괜찮습니다. 그러나 풀이만 확인하고 끝내는 것이 아니고 반드시 풀이를 바탕으로 혼자 힘으로 구현해보는 것을 추천드립니다.

응용 문제✔를 모두 해결했다면 우선 다음 단원으로 넘어가고, 나중에 완강을 한 후 남은 응용 문제를 풀이 참고 없이 도전해보는걸 추천드립니다.

정리하자면 문제집에서 연습 문제, 기본 문제✔, 응용 문제✔ 까지 풀고 다음 단원으로 넘어가는걸 추천드립니다. 응용 문제✔는 풀이를 참고해도 괜찮지만 연습 문제, 기본 문제✔는 강의의 내용을 잘 이해했다면 풀이를 참고하지 않고 구현할 수 있기 때문에 혼자 힘으로 풀어보길 권장합니다. 만약 응용 문제✔를 푸는데에 어려움이 있다면 응용 문제✔ 대신 기본 문제를 더 풀고 다음 단원으로 넘어가도 괜찮습니다