Skip to content

Commit 12a143f

Browse files
committed
updatE
1 parent c1ee370 commit 12a143f

File tree

4 files changed

+217
-0
lines changed

4 files changed

+217
-0
lines changed

week14/haenim/로봇 청소기.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
"""
2+
빈칸 0 벽 1
3+
바라보는 방향: 0 북, 1 동, 2 남, 3 서
4+
5+
6+
"""
7+
8+
9+
10+
def solution():
11+
count = 1
12+
n, m = map(int, input().split())
13+
x, y, d = map(int, input().split())
14+
board = [list(map(int, input().split())) for _ in range(n)]
15+
16+
board[x][y] = 2 #현재 위치 청소
17+
18+
dx, dy = [-1,0,1,0], [0,1,0,-1]
19+
20+
while True:
21+
fail = True
22+
23+
for i in range(4):
24+
25+
nd = (d+3)%4 # 다음 방향
26+
nx,ny = x + dx[nd], y + dy[nd] #그 방향으로 이동
27+
d = nd
28+
29+
if nx >= n or ny >= m:
30+
continue
31+
32+
33+
elif board[nx][ny] == 0 : #빈칸이면
34+
board[nx][ny] = 2 #청소
35+
x,y = nx,ny
36+
count += 1
37+
fail = False
38+
break
39+
40+
41+
# 네 방향 모두 청소 못했으면
42+
if fail == True:
43+
nd = (d + 2) % 4 #후진
44+
nx,ny = x + dx[nd], y + dy[nd]
45+
46+
if nx >= n or ny >= m or board[nx][ny] == 1:
47+
return count
48+
49+
else :
50+
x,y = nx, ny
51+
52+
return count
53+
54+
print(solution())
55+
56+
57+
58+

week14/haenim/보석 쇼핑.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""
2+
정확도 33.3
3+
효율성 13.3
4+
5+
"""
6+
7+
def solution(gems):
8+
answer = []
9+
10+
gems_set = set(gems)
11+
12+
len_gems_set = len(gems_set)
13+
14+
minimum = 1000000
15+
16+
value = [0]*len_gems_set
17+
gems_dict = dict(zip(gems_set,value))
18+
19+
print(gems_dict)
20+
21+
start = 0
22+
end = 0
23+
24+
while end < len(gems):
25+
temp = gems[start:end+1]
26+
gems_dict[gems[end]] += 1
27+
28+
29+
end += 1
30+
31+
if len_gems_set == len(set(temp)):
32+
33+
while start < end :
34+
if gems_dict[gems[start]] > 1 :
35+
gems_dict[gems[start]] -= 1
36+
37+
start += 1
38+
39+
elif minimum > end - start:
40+
minimum = end - start
41+
answer = [start+1, end]
42+
43+
break
44+
45+
else:
46+
break
47+
48+
49+
50+
51+
return answer
52+
53+
54+
print(solution(["DIA", "RUBY", "RUBY", "DIA", "DIA",
55+
"EMERALD", "SAPPHIRE", "DIA"]))
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
"""
2+
정확도 33.3
3+
효율성 66.7
4+
5+
6+
"""
7+
8+
def solution(gems):
9+
answer = []
10+
11+
gems_set = set(gems)
12+
13+
len_gems_set = len(gems_set)
14+
15+
minimum = 1000000
16+
17+
gems_dict = {}
18+
19+
20+
start = 0
21+
end = 0
22+
23+
while end < len(gems):
24+
if gems[end] not in gems_dict:
25+
gems_dict[gems[end]] = 1
26+
else :
27+
gems_dict[gems[end]] += 1
28+
29+
30+
end += 1
31+
32+
if len_gems_set == len(gems_dict):
33+
34+
while start < end :
35+
if gems_dict[gems[start]] > 1 :
36+
gems_dict[gems[start]] -= 1
37+
38+
start += 1
39+
40+
elif minimum > end - start:
41+
minimum = end - start
42+
answer = [start+1, end]
43+
44+
break
45+
46+
else:
47+
break
48+
49+
50+
51+
52+
return answer
53+
54+
55+
print(solution(["DIA", "RUBY", "RUBY", "DIA", "DIA",
56+
"EMERALD", "SAPPHIRE", "DIA"]))

week14/haenim/순위검색.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
def solution(info, query):
2+
#info : 지원자 정보
3+
#query : 조건
4+
# [조건]을 만족하는 사람 중 코딩테스트 점수를 X점 이상 받은 사람은 모두 몇 명인가?
5+
6+
answer = []
7+
8+
9+
#쿼리 개수 만큼 반복
10+
for i in range(len(query)):
11+
count = 0
12+
13+
# java and backend and junior and pizza 100 = > ['java', 'backend', 'junior', 'pizza', '100']
14+
q = query[i].split(" and ")
15+
last = q[-1].split(" ")
16+
q.pop()
17+
q = q + last
18+
19+
20+
# 각 유저에 대해서
21+
for data in info:
22+
for j in range(len(q)):
23+
#이 쿼리의 모든 조건을 만족하면 count를 늘림
24+
if j == 4:
25+
if int(q[j]) <= int(data.split()[-1]):
26+
count += 1
27+
28+
if q[j] == "-":
29+
continue
30+
31+
# 하나라도 조건에 안맞는 유저면 버림
32+
elif j != 4 and data.find(q[j]) == -1:
33+
break
34+
35+
36+
37+
38+
answer.append(count)
39+
40+
41+
return answer
42+
43+
44+
print(solution(["java backend junior pizza 150", "python frontend senior chicken 210", "python frontend senior chicken 150",
45+
"cpp backend senior pizza 260", "java backend junior chicken 80", "python backend senior chicken 50"],
46+
["java and backend and junior and pizza 100", "python and frontend and senior and chicken 200",
47+
"cpp and - and senior and pizza 250", "- and backend and senior and - 150", "- and - and - and chicken 100",
48+
"- and - and - and - 150"]))

0 commit comments

Comments
 (0)