유형: 그리디 문제: https://www.acmicpc.net/problem/6550 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 입출력 방식 입력받는 개수가 몇개인지 모르는 경우이다. 이런 경우를 입력받는 방법은 여러 가지가 있는 것 같다. 이 글에 정리가 잘 되어있다! https://scarlettb.tistory.com/69 가장 직관적인 방법은 while문 조건에 cin 또는 scanf를 넣는 것이다. 다만 scanf를 넣을 땐 scanf(...) != EOF 형식으로 써야하는 것 같다. do whil..
유형: 그리디 문제: https://www.acmicpc.net/problem/2891 2891번: 카약과 강풍 첫째 줄에 팀의 수 N, 카약이 손상된 팀의 수 S, 카약을 하나 더 가져온 팀의 수 R이 주어진다. (2 ≤ N ≤ 10, 1 ≤ S, R ≤ N) 둘째 줄에는 카약이 손상된 팀의 번호가 주어진다. 팀 번호는 중복되지 않 www.acmicpc.net 풀이 문제 기준 인덱스 시작이 0인지 1인지 잘 봐야한다. 이 문제는 1부터 시작하기에 벡터에 넣을 때 1씩 빼주었다. 벡터는 N개의 원소의 값을 모두 1로 초기화하고, 없는 팀은 -1 연산, 여분 팀은 +1 연산을 한다. 그후 벡터의 원소를 하나씩 돌면서, 여분 팀을 기준으로 연산한다. 여분 팀의 앞팀이 없는 경우에는 앞팀을 먼저 빌려주고 끝난..
유형: 그래프, BFS 문제: https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 풀이 1 처음 생각해낸 풀이. 큐에 좌표뿐만 아니라 카운트 수도 저장했다. 초기 코드는 메모리 초과로 실패했는데, 방문처리를 큐에서 pop할 때가 아니라 파생위치를 큐에 넣을 때 해줘야한다. 왜냐하면, 큐에서 pop할 때 방문처리를 하면 큐에 있는 원소들은 전부 방문하지 않았다는 전제가 깔린다. 따라서 큐에 좌표가 중복으로 들어갈 수도 있어서, 불필요한 탐색이 많아진다..
8월 2일부터 8월 16일까지 진행된 해커런 행사에 참가했습니다. Azure Static Web App과 Github Action이 행사 주제였습니다. 마이크로소프트에서 공식으로 제공하는 자료를 보면서 위 두 기술을 적용하는 법을 배울 수 있었습니다. 가장 큰 장점은 코드의 오류가 없는 한 웹사이트 빌드와 배포가 Github 저장소에 Push만 해도 자동적으로 적용되는 것이라고 생각합니다. 저는 이번 행사를 계기로 첫 웹 프로젝트를 개발해봤는데, 제가 만든 웹페이지를 쉽게 배포할 수 있는 것이 정말 좋았습니다. 기술적인 회고는 프로젝트가 마저 완료된 뒤에 천천히 써보도록 하겠습니다. 두 기술을 이용한 배포 자동화 화면입니다. 앞으로도 조금씩 웹개발을 배우려고 하는데, 웹을 배포할 때 자주 사용하게 될 것..
알고리즘 문제를 풀이할 때 보다 효율적인 방법을 찾기 위해, 피보나치 수열을 통해 재귀와 DP의 차이를 효율성 측면에서 알아보겠습니다. 재귀를 통한 피보나치 수열 구현 def fibonacci(n): print("실행") if n == 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2) 실행 결과는 다음과 같습니다. fibonacci(5) #5번째 피보나치 수열 값 구하기 실행 실행 실행 실행 실행 실행 실행 실행 실행 실행 실행 실행 실행 실행 실행 결과: 5, 시간경과: 0.0009913444519042969 #결과 피보나치 수열의 5번째 값을 구할 때, 함수가 15번 실행됨을 알 수 있습니다. fibonacci..