1단계 - 입출력과 사칙연산 2557 Hello World 1000 A + B 1001 A - B 10998 A x B 1008 A / B 10869 사칙연산 10926 ??! 18108 1998년생인 내가 태국에서는 2541년생?! 3003 킹, 퀸, 룩, 비숏, 나이트, 폰 10430 나머지 2588 곱셈 10171 고양이 1017...
2단계 - 조건문 1330 두 수 비교하기 9498 시험 성적 2753 윤년 14681 사분면 고르기 2884 알람 시계 2525 오븐 시계 2480 주사위 세개
3단계 - 반복문 2739 구구단 10950 A+B - 3 8393 합 25304 영수증 15552 빠른 A+B 11021 A+B - 7 11022 A+B - 8 2438 별찍기 - 1 2439 별찍기 - 2 10952 A+B - 5 10951 A+B - 4 1110 더하기 사이클
4단계 - 반복문 10897 개수 세기 코드 해설 반복문을 사용해서 a[0] ~ a[n-1] 까지 입력받은 v값과 비교해서 같은 수 가 있으면 count 값을 +1 해준다. 10871 코드 해설 a[i]와 x를 비교해서 a[i] 값이 더 작으면 출력하는데, 이를 a[n-1]까지 반복한다. 10818 최소, 최대 문제 함수를 사용해서 풀면 메모리 초과 문제가 발생한다. 나는 sort()를 쓰지 않고 계수 정렬 알고리즘을 이용해서 풀었다. 계수 정렬(Counting sort) 주어진 배열의 값 범위가 작은 경우 빠른 속도로 정렬하는 알고리즘 원소의 개수와 원소 최대 값이 수행시간에 영향을 준다. 예시 코드 코드 결과
문제 풀이 먼저, 연결요소란 그래프의 개수와 같다. 정점 사이에 겹쳐진게 없고, 나누어진 각각의 그래프를 연결 요소라고 생각하면 된다. 연결 요소는 dfs나 bfs탐색으로 구할 수 있다. graph는 2차원 배열로 연결된 정보를 얻을 수 있음. visited 배열은 정점에 방문했는지 확인하기 위한 배열로 False로 초기화. dfs함수에서는 방문하지 ...
문제 풀이 소수 판별로 문제를 풀었다. 코드 결과
문제 풀이 문제에서 N의 범위가 최대 2000이기에 visited를 2001개 지정한다. 재귀함수 dfs를 사용해서 결과를 도출해냄. 코드 결과
문제 풀이 입력값으로 리스트를 만들고 dfs(재귀), bfs(큐)를 이용해 풀었다. BFS (Breadth-First-Search) 너비우선탐색이라 부른다 과정 탐색시작노드를 큐에 삽입하고 방문처리 한다. 큐에서 노드를 꺼낸 뒤 해당 노드의 인접 노드중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리한다. 더이상 2번의 과정을 수행할 수 없을 ...
문제 풀이 (0,0)부터 좌표를 한 칸씩 이동할 수 있는 부분에 전의 횟수에서 +1씩 하면 된다. (0,0)에서 이동할 수 있는 좌표는 (1,0), (0,1)이므로 1에서 2로 바꿔준다. 다음으로 (1,0)에서 이동할 수 있는 좌표 (1,1), (2,0)는 2에서 3으로 바꿔준다. 이런식으로 반복해서 최솟값을 찾을 수 있다. 코드 결과
문제 풀이 트리와 bfs로 풀었다. 트리의 지름 구하기 트리의 지름 : 가장 먼 두 노드 사이의 거리 선형 시간 안에 트리의 지름을 구하는 방법 1) 트리에서 임의의 노드 x를 설정 2) 노드 x를 기준으로 가장 먼 노드 y를 탐색한다. 3) 노드 y를 기준으로 가장 먼 노드 z를 탐색한다. 4) 트리의 지름 : 노드 y와 노드...
문제 풀이 a를 set으로 만들어 탐색 시간을 줄였다. 코드 결과