본문 바로가기

알고리즘

(70)
프로그래머스 - 주식가격 프로그래머스 주식가격 문제입니다. 분류는 스택/큐로 되어있는데 저는 스택이나 큐를 사용해서 풀진 않았습니다. 이 문제를 풀기전까지는 노트로 정리하지 않고 시작했는데 항상 어려움을 겪었습니다. 이번부터는 먼저 노트에 코드를 어떻게 작성할지 정리하고 코드를 구현했는데 훨씬 깔끔하고 쉬웠던 것 같습니다. 물론 문제 자체가 쉬웠던 영향도 있겠지만요. 앞으로는 노트를 무조건 이용해야겠습니다. ㅎㅎ class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; int temp; for(int i=0; i
백준 1260번 - DFS와 BFS DFS와 BFS 문제를 한번 풀어보았습니다. 바이러스 문제를 풀고 이 문제를 푸니까 사실 DFS는 동일한 문제라고 생각들 정도로 금방 구현을 완료했습니다. 그러나 BFS는 DFS와 다르게 재귀로 구현하는 것이 아닌 큐를 활용해서 구현해야 합니다. (DFS도 STACK으로 구현 가능) 두 문제 모두 그래프를 인접 행렬로 만들어서 풀었는데 다른 블로그 자료를 찾아보니 그래프 간선이 적게 존재하면 연결 리스트로 구현하는 것이 공간 복잡도상 더 좋다고 합니다. 다음 글에는 한번 그래프 인접 행렬과 인접 리스트 구현에 대해서도 작성해보겠습니다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Mai..
백준 2606번 -바이러스 (DFS) DFS를 집중적으로 공부하기 위해서 기초문제부터 풀려고 하고 있습니다. 문제를 읽어보니 그래프를 먼저 생성하는 것이 필요하다고 생각해서 인접행렬과 인접리스트로 구현하는 방법 중 인접행렬로 그래프를 만들었습니다. 그래프를 구현할 때 중요한 것이 map의 크기인데요 배열의 index는 0부터 생성되나 그래프의 index는 1부터 사용하는 것이 더 편리하므로 +1을 해주는 것이 포인트입니다. 또한 dfs의 개념상 방문한 장소를 구별해야하므로 visited라는 배열을 생성해 체크해주었습니다. 인접행렬로 그래프를 생성후에는 1번과 연결된 컴퓨터의 숫자만 count하면 되기 때문에 dfs를 활용했습니다. dfs의 재귀개념을 제대로 이해하지 못했는데 끝까지 찾다가 다 찾은 경우 다시 원래의 자리로 돌아간다라는 생각을..
프로그래머스 - 전화번호 목록 프로그래머스 전화번호 목록 문제입니다. startsWith라는 매서드때문에 쉽게 풀수 있었습니다. startsWith라는 매서드는 문자열을 앞에서부터 비교하면서 같은 문자열이 존재하면 true를 반환하고 그렇지 않을 경우 false를 반환합니다. class Solution { public boolean solution(String[] phone_book) { boolean answer = true; boolean result = false; int len = phone_book.length; String temp = ""; for(int i=0; i
프로그래머스 Level 2 기능개발 - Python import math def solution(progresses, speeds): answer = [] result = [] num = len(progresses) # 0 ~ num-1 for i in range(num): temp = 100 - progresses[i] temp = temp / speeds[i] temp = math.ceil(temp) result.append(temp) n = 1 # 같은 number로 for i in range(1, len(result)): if result[i-1] > result[i]: result[i] = result[i-1] for i in range(1, len(result)): if result[i-1] >= result[i]: n += 1 else: an..
백준 문제 풀이 10797번 - Python Date = input() CarNumber = input().split(" ") count = 0 for i in CarNumber: if Date == i: count += 1 print(count)