고작 2단계뿐 안됐는데 왜 진도가 안나가는걸까요😭 난 도대체 언제 알고리즘 실력이 느는걸까요😱😱
[SOFTEER] 내가 단계별로 정리한 문제집 https://softeer.ai/class/devcrew/main?id=257
[GITHUB] 도장깨기가 목표였으나 현실은 내가 뚜드려맞는 중 https://github.com/ijo0r98/codingtest-py
https://softeer.ai/practice/7703
실패한 첫 번째 풀이
import sys
sys.setrecursionlimit(5000)
n = int(input())
answer = ""
for i in range(n):
inputs = input().split(" ")
s, t = inputs[0].upper(), inputs[1].upper()
index = s.index("X")
answer+=t[index]
print(answer)
결국 원인은 못찾고 구글링..
N = int(input())
answer = []
for _ in range(N):
S, T = map(str, input().split())
for i, s in enumerate(S):
if s == 'x' or s == 'X':
answer.append(T[i].upper())
break
print(''.join(answer))
자바로 코테 준비할때 문자열 추가 시, + "" 말고 다른 객체를 사용하라는 글을 봤었다. 뭐 그런 이유인지는 모르겠으나 아직 원인은 모른채 넘어감
https://softeer.ai/practice/7628
import sys
n = int(input())
arr = list(map(int, input().split()))
arr.sort()
answer = -100
for i in range(2, max(arr)+1):
cnt = 0
for j in range(n):
if arr[j]%i==0 : cnt +=1
answer = max(answer, cnt)
print(answer)
처음에 주어지는 연탄 크기 중에 반지름 크기가 정해져야하는 줄 알고 잘못풀었던 문제, 알고보니 반지름 크기는 내가 정하는 거였음
https://softeer.ai/practice/7374
import sys
arr = []
for i in range(3):
arr.append(list(map(int, input().split())))
answer=100
for i in range(3):
col = max(arr[i][0], arr[i][1], arr[i][2]) - min(arr[i][0], arr[i][1], arr[i][2])
row = max(arr[0][i], arr[1][i], arr[2][i]) - min(arr[0][i], arr[1][i], arr[2][i])
answer = min(answer,min(col, row))
print(answer)
가로 세로 길이가 3으로 정해져있었기에 모든 경우의 수를 다 비교하여 답을 구했다.
https://softeer.ai/practice/6288
실패한 첫번째 풀이
prices={}
for i in range(n):
inputs = list(map(int, input().split()))
prices[inputs[1]]=inputs[0] # key 가격 : value 무게
for key in prices.keys():
if prices[key] <= w:
answer += (key * prices[key])
w -= prices[key]
else:
answer += (w * key)
break
왜 틀렸는지 모르겠어서 구글링하고 개발자톡 찾아보다 얻은 힌트 https://softeer.ai/connect/devtalk/1357
비싼 가격을 얻기 위해 가격순으로 귀금속을 탐색하려했다. 그래서 처음에 귀금속 정보를 저장하는 딕셔너리의 key를 가격으로, value를 무게로 잡고 key로 정렬했다.
근데 .. 이렇게 하면 문제가 있다! 같은 가격일 때 즉 key가 같을 때 무게가 덮어쓰워진다는 문제가 발생한다. 그래서 딕셔너리가 아닌 이중 배열의 형태로 귀금속 정보를 저장하였다.
values = [list(map(int, input().split())) for _ in range(n)] # n만큼 리스트 저장하여 2차원 배열 생성 [m, p]
values = sorted(values, key=lambda x: x[1], reverse=True) # p값 기준 정렬
for m, p in values:
if m <= w:
answer += (p*m)
w -= m
else :
answer += (w*p)
break
print(answer)
https://softeer.ai/practice/6284
이것도 처음에 실패한 풀이.. 통과 못한 이유는 시간초과.. 그것도 꽤나 많은 테케에서의 시간초과
import sys
input = sys.stdin.readline
k, p, n = map(int, input().split())
v=k
for _ in range(n):
v *= p
print(v%1000000007)
결국 구글링 찬스 https://softeer.ai/connect/devtalk/1465
ans = k
for _ in range(n):
ans = (ans*p)%1000000007
print(ans)
연산 도중 숫자를 계속 작게 유지해주면 속도가 더 빠르다고 한다.
https://softeer.ai/practice/6283
거의 레벨1에 가까웠던 문제
import sys
values = list(map(int, input().split()))
ascending = [1, 2, 3, 4, 5, 6, 7, 8]
descending = [8, 7, 6, 5, 4, 3, 2, 1]
if (values == ascending) : print("ascending")
elif (values == descending) : print("descending")
else : print("mixed")
https://softeer.ai/practice/6282
대표적인 DFS 문제로 사실 아직 제대로 다 못풀었다. 아직까지 단순 구현 외의 알고리즘 문제가 너어ㅓ무 어렵다!
# 출처 : https://fre2-dom.tistory.com/24
import sys
# DFS로 특정 노드를 방문하고 연결된 모든 노드들도 방문
def dfs(x, y):
# 주어진 범위를 벗어나는 경우에 즉시 종료
if x <= -1 or x >= n or y <= -1 or y >= n:
return False
# 현재 노드를 아직 방문하지 않았다면
if graph[x][y] == 1:
# 장애물의 개수 체크
cnt.append(1)
# 해당 노드 방문 처리
graph[x][y] = 0
# 상, 하, 좌, 우의 위치들도 모두 재귀적으로 호출
dfs(x - 1, y)
dfs(x, y - 1)
dfs(x + 1, y)
dfs(x, y + 1)
return True
return False
# 지도 크기를 입력받는다.
n = int(sys.stdin.readline())
cnt = []
# 2차원 리스트의 맵 정보 입력 받는다.
graph = []
for i in range(n):
graph.append(list(map(int, input())))
# 모든 노드(위치)에 대하여 장애물 블록을 만든다.
result = 0
result_list = []
for i in range(n):
for j in range(n):
# 현재 위치에서 DFS 수행
if dfs(i, j) == True:
result += 1
# 길이를 통해 장애물의 개수 확인
result_list.append(len(cnt))
cnt = []
# 총 블록의 수 출력
print(result)
# 장애물의 수 오름차순 정렬 후 출력
result_list.sort()
for i in result_list:
print(i)
참고한 블로그 1) https://khw11044.github.io/study/codingtest/2023-04-13-cote12/
참고한 블로그 2) https://fre2-dom.tistory.com/24
[Softeer] PYTHON | input() 관련 런타임에러 해결하기 (7353. 나무심기) (0) | 2024.07.28 |
---|---|
[Softeer] PYTHON | 연습문제 풀이 Lv2(2) 지동 자동 구축 ~ (0) | 2024.06.30 |
[Softeer] PYTHON 연습문제 풀이 Lv1 나무심기 ~ 주행거리 비교하기 (2) | 2024.06.02 |
[PROGRAMMERS] 그래프탐색 뽀개기 | 파이썬 | 프로그래머스 DFS/BFS 문제풀이 (0) | 2022.03.10 |
[BAEKJOON] 그래프탐색 뽀개기 | 파이썬 | 백준 Lv24. DFS와 BFS 문제풀이 (0) | 2022.03.10 |
댓글 영역