Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# CodingTest

## Rules

- 해당 수업은 한성대학교 x Programmers에서 수업한 내용을 토대로 작성했습니다.
### Branch

- main
Expand Down
32 changes: 32 additions & 0 deletions javascript/manager/programmers/169586.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
let keymap = ["ABACD", "BCEFD"];
let targets = ["ABCD", "AABB"];

function solution(keymap, targets) {
var answer = [];
// let count = 0; //count의 위치가 중요. 왜냐면 초기화 때문에
for (let i = 0; i < targets.length; i++) {
let count = 0; // 각 target에 대해 초기화. index 1일 때 와 2일 때를 구별하기 위해 초기화를 해야한다.
for (let j = 0; j < targets[i].length; j++) {
let minPress = Infinity; // 최소 누르기 횟수 저장
// 여기까지 target의 모든 요소들을 나누었다 이제 keymap의 루프를 돌면서 해당 값을 비교 대조 해야한다.
for (let k = 0; k < keymap.length; k++) {
let index = keymap[k].indexOf(targets[i][j]);
//-1인 공백이 아니라면
if (index !== -1) {
minPress = Math.min(minPress, index + 1); // 1-based index
}
}
// 해당 조건문은 왜 있는건가?
if (minPress === Infinity) {
count = -1; // 키를 찾을 수 없는 경우
break;
} else {
count += minPress;
}
}
answer.push(count);
}
return answer;
}

console.log(solution(keymap, targets));
21 changes: 21 additions & 0 deletions python/lecture/1/lecture01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# def solution(my_string, s, e):
# answer = my_string[s] + my_string[e]
# return answer


# str = input()
# solution(str, 6, 12)

def solution(my_string, s, e):
mylist = list(my_string)
mylist[s:e+1] = reversed(mylist[s:e+1])
answer = ''.join(mylist)
return answer
# str = input("")

# result = solution(str, 6, 12)
# print(result)


print(solution("Progra21Sremm3", 6, 12))
print(solution("Stanley1yelnatS", 4, 10))
17 changes: 17 additions & 0 deletions python/lecture/1/lecture02.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# def solution(my_string, k):
# answer = my_string * k
# return answer


# str = input("")
# k = input()
# solution(str, k)


def solution(my_string, k):
answer = my_string * k
return answer


print(solution("string", 3))
print(solution("love", 10))
11 changes: 11 additions & 0 deletions python/lecture/1/lecture03.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
def solution(myString, pat):
# 한 방향이기 때문에 template가 필요하다.
myString = myString.replace('A', 'X')
myString = myString.replace('B', 'A')
myString = myString.replace('X', 'B')
answer = int(pat in myString)
return answer


print(solution("ABBAA", "AABB"))
print(solution("ABAB", "ABAB"))
7 changes: 7 additions & 0 deletions python/lecture/1/lecture04.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
def solution(my_string, target):
answer = target in my_string
return answer


print(solution("banana", "ana"))
print(solution("banana", "wxyz"))
5 changes: 5 additions & 0 deletions python/lecture/1/lecture05.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
def solution(rny_string):
answer = rny_string.replace('m', 'rn')
return answer

# print(solution())
3 changes: 3 additions & 0 deletions python/lecture/1/lecture06.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
def solution(myString, pat):
answer = int(pat.lower() in myString.lower())
return answer
6 changes: 6 additions & 0 deletions python/lecture/1/lecture07.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
def solution(my_string):
if len(my_string) > 0:
answer = my_string.split(' ')
else:
answer = my_string
return answer
3 changes: 3 additions & 0 deletions python/lecture/1/lecture08.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
def solution(myString):
answer = [len(segment) for segment in myString.split('x')]
return answer
Empty file added python/lecture/2/lecture01.js
Empty file.
49 changes: 49 additions & 0 deletions python/lecture/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# 시간 관리
시간 관리 중요하다.
결국 시간은 중요
코테 중에서는 모든 문제를 풀 수 있게 제공하지 않는 경우도 있다.
여러문제로 구성되어 있으면 1번 문제는 워밍업이기 때문에 무조건 풀어야한다.
따라서 빨리 풀 수 있는 문제를 먼저 풀어라.

만약 문제를 풀다보니 시간이 없다면 부분 점수를 노려라 시간복잡도를 고려핮 말고 기본적이 풀이로 점수를 얻어라, 모든 테스트 케이스가 맞을 필요가 없다.

쉬운문제는 부분점수가 없다. 이럴때는 엣지 케이스 검증, 정확도가 필요하다.

집념이 생기는 순간 풀 수 있는 다른 문제도 못 풀게 된다. 집념, 고집을 버려라, 약간의 로직만 추가하면 될거같단 생각에 휘말리지 말라

---
# 연습할 때는?
1시간을 잡고 문제를 풀어낸다. 따라서, 시간이 오버되면 풀이를 보고 빠르게 다른 사람들의 스킬과 노하우, 아이디어를 습득하라
단, 너무 많이 풀이를 참조하면 문제 해결 능력이 저하

사실상 프로그래머스는 문제가 다양하지 않다. 따라서 문제 은행은 백준이다. 전세계 사람들과 코딩을 하고 대회를 참여하고 싶다면 codeforces에 참여해보라

# 나의 수준은?
백준 골드3 ~ 4 정도는 되어야한다. 동기가 없다면 이걸 목표로 하라

# 나의 문제 풀이 전략은?
- 현재 최대한 많은 문제를 접하고 노하우를 배우는게 중요하다. 따라서, 30분 안에 문제를 풀어보고 안될 경우 GPT에게 도움을 받고 학습하는 `빠르게! 전략`을 할 예정이다. 이후에는 내가 잘 풀지 못한 문제들을 PR, issue로 정리해서 `돌려 먹기 전략`으로 반복해서 풀어본다.

# 응용 자료구조
## 이진 트리/ 이진 탐색 트리
## 인접 리스트/ 인접 행렬/ 최소 신장 트리
- 이진 탐색 트리의 삭제가 어려움
# 고급 자료 구조
## 트라인 / 세그먼트 트리(모두 재귀 -> 컴퓨팅적 사고가 생긴다.)

# 필수 알고리즘
## 정렬
## 탐색 알고리즘(DFS-백트래킹(탈출), BFS-다익스트라)
## 재귀적 호출
- 처음부터 마지막까지 어떻게 될지 고민하지 말 것
- 중간 과정을 추상적으로만
- 마지막 결과만 잘 도출(if, else)
- 피보나치 수열로 연습

- [자료구조 시각화](https://visualgo.net/en)
- [CS 학습 자료](https://github.com/gyoogle/tech-interview-for-developer)
- 스터디 내부에서 모의 면접

- GPT를 기반으로 거짓정보를 해결하라 오히려 블로그가 거짓정보가 많다. 현직자도 구글링을 더 이상 하지 않는다.

- 문법 교정이 필요
17 changes: 17 additions & 0 deletions python/lecture/printer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
function solution(priorities, location) {
let queue = priorities.map((priority, index) => ({ priority, index }));
let order = 0;

while (queue.length > 0) {
const current = queue.shift();

if (queue.some(item => item.priority > current.priority)) {
queue.push(current); // 뒤로 보냄
} else {
order++;
if (current.index === location) {
return order;
}
}
}
}