백준 6

[JAVA/백준1110] 더하기 사이클

1. 문제 2. 풀이 사이클의 횟수를 구하는 getCycle()을 호출하는데 여기서 원래 수로 돌아올 때 까지 연산이 반복되므로 각각의 조건에 나누어 재귀로 함수를 호출하고 사이클의 횟수를 저장하는 변수count의 값을 하나씩 증가해주었다. 연산은 정수n이 주어졌을때 10의 자리수와 1의 자리수를 더해준 후, 원래 n의 오른쪽 자리 수와 이어붙어주어야 하므로 string클래스의 내장 함수를 사용하는것이 편할것 같다는 생각이 들어서 문자열로 입력받았다. n이 00일 경우 ~ 1번만 연산을 해주면 되므로 바로 리턴 n이 0~9일 경우 ~ 예를 들어 n=9일 때, 09→0+9=09이므로 이어 붙이면 다음 n은 99가 된다. 즉, n을 두번 이어 붙이면 된다. n이 두자리 수인 경우 ~ 변수tmp에 n의 각 자..

[JAVA/백준9012] 괄호 - 스택

문제 풀이 테스트케이스만큼 문자열을 입력받는데, 이때 한번 입력받을때 괄호검사를 하는 함수를 호출한다. 괄호검사를 하는 함수 isCorrect()는 호출될때마다 스택을 새로 생성한다. 문자열의 길이만큼 검사를 해주는데, 이때 스택이 비었을 경우에는 문자열의 i번째 문자를 스택에 넣어준다. 스택이 비어있지 않으면 스택의 가장 위(peek())와 i번째 문자를 비교해준다. 이때 주의할점은 처음에 단순히 (와 ), 또는 )와 (처럼 괄호가 같지 않으면 pop이 되도록 해주었는데 괄호가 닫히는 모양은 스택의 top은 항상 '('이어야 하고 스택에 넣을 문자는 항상 ')'이어야 한다. 이점만 유의하고, 스택클래스를 사용한적이 있다면 삽질하지 않고 빠르게 풀 수 있을 문제였다 ㅠㅠ 소스코드 import java.u..

[JAVA/2667] 단지번호붙이기

1. 문제 2. 문제 풀이 지도의 크기 n을 입력받을 때, n의 최대가 25이므로 나중에 출력될 단지개수는 최대 313개가 나올 수 있다. 따라서 각 단지 내 집수를 저장할 배열 danji의 크기를 최대 큰 (n*n/2)+2개로 잡아주었다. n+1사이즈의 map[n+1][n+1]을 for문을 돌면서 (1,1)부터 순서대로 이동시킨다. 이때 값이 1이고 한번도 방문하지 않은 경우가 나오면 단지번호(cnt)를 하나 증가시키고 dfs함수를 호출한다.dfs함수에서는 넘어온 좌표는 이제 방문했음을 표시해야 하므로 visited배열에서 해당하는 좌표에 1을 넣는다. 그리고 해당하는 단지번호에 집 하나가 들어온것이므로 danji[cnt]를 하나 증가시켜준다. 이제 이 단지에 있는 집을 '오른쪽→아래→왼쪽→위쪽'의 시..

[JAVA/백준2579] 계단오르기 - DP

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 www.acmicpc.net 1. 문제 2. 풀이 이 문제는 처음 접근했을때 생각을 잘못해서 고민하는 시간이 굉장히 오래 걸렸다. 마지막에서 결국 정답에 근접한 규칙을 알아냈지만 이를..