생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q6593.java 상범이가 빌딩을 탈출할 수 있다면 양식에 맞춰 최단 시간을 출력하고 탈출할 수 없다면 탈출 불가일 때의 문자를 출력하여라. 처음 생각이전에 풀었던 문제인 [백준] 7569번 토마토 와 비슷하게 풀어볼 수 있는 문제이다. 다음 생각여러개의 케이스가 주어지고 입력이 조금 특이하게 라인 단위로 띄워져 있기 때문에 입력을 받을 때 이부분을 조심해야한다. 다다음 생각3차원 적으로 생각을 해야하기에 3차원 배열을 생성해서 길을 찾아갈 수 있도록 해주었다.▶ 다차원 배열은 메모리를 많이 잡아먹기 때문에 따로 visited 배열을 만들어 주지않고, 원본 배열을 갈 수..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q15552.java 각 A+B의 결과를 출력한다. 처음 생각입력으로 받고 계산후 출력해야하는 개수가 최대 100만개로 매우 많으므로 Java의 경우 Scanner, Python의 경우 input() 을 그대로 사용하면 시간 초과가 날 가능성이 매우 크다.▶ Java의 경우는 BufferedReader, Python의 경우에는 sys.stdin 을 이용해서 입력을 받아주면 된다. ▶ Java의 경우 StringBuilder나 BufferedWriter를 통해 입력을 누적해서 한 번에 출력을 해주어야 메모리 초과가 나오지 않는다. 방안1) 방안 입력과 출력이 많다고 생각되..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1978.java 주어진 숫자들 중 소수의 개수를 출력하여라. 처음 생각소수를 구할 수 있는 다양한 방법들이 있지만 에라토스테네스 체를 사용하는것이 가장 간단하면서 괜찮은 속력을 보장해주는것 같다. 특히, 이처럼 다양한 숫자들을 검사해야할 때는 매번 소수 판별을 하는 것보다 에라토스테네스 체를 이용해서 한 번에 구해놓는것이 좋다.▶ 범위가 1000까지 이므로 1000이하의 모든 소수를 구해놓은 뒤, 주어진 숫자들중 소수의 개수를 세어 출력해주었다. 방안1) Java 풀이 123456789101112131415161718192021222324252627282930packa..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1476.java 준규가 사는 나라는 다른 연도 계산법을 사용한다. E S M 으로 나눠지며 각 년도의 시작은 1이다. E는 1~15, S는 1~28, M은 1~19를 반복하며 1년이 지나면 각년도가 1씩 올라간다. 준규가 사는 나라의 년도가 주어졌을 때, 우리의 년도로 몇 년인지 출력하여라. 처음 생각카잉 달력 문제 같은 경우랑 같은 풀이법을 적용하면된다. 다만 카잉 달력 같은 경우는 범위가 무척 크기 때문에 정직하게 풀 수 없었지만 이번 날짜 계산 문제는 제한 숫자가 적으므로 정직하게 풀어주었다.▶ te,ts,tm 변수를 초기값 1로 선언해주고, e,s,m과 같아질 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q4673.java 양의 정수 n에대해서 n과 n의 각 자리수를 더하여 새로운 수를 만들 수 있다. 예를들어 33 이면 33+3+3=39, 39+3+9=51.... 이런 식으로 쭉 만들 수 있다. 이런식으로 만들 수 없는 수를 셀프 넘버라고 한다. 10000 이하의 셀프 넘버를 출력하여라. 처음 생각입력이 주어지지 않고 10000 이하의 셀프 넘버를 구해서 출력 하기만 하면 된다. 셀프 넘버란 위의 조건으로 만들어 지지 않는 수이므로 조건으로 만들어지는 수들을 구해서 그 수들을 제외한 수를 답으로 선택하면된다.▶ 1~10000까지의 숫자중 답을 내어야하므로 arr[1000..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q9095.java n이 주어질 때, 1과 2와 3을 이용해서 n을 만들 수 있는 경우의 수를 출력하여라. 더하는 순서에 따라 다른 가지수로 인정한다. 예를들어 1+2와 2+1은 다른 가지수이다. n의 최대값은 11까지 주어진다. 처음 생각이전에는 재귀를 통한 DFS 완전 탐색을 통해 문제를 풀었었다. [백준] 9095번 1, 2, 3 더하기 이번에는 풀고보니 DP로 푼걸로 봐서 이전 보다는 풀이 접근이 좋아진것 같다는 생각이 든다.▶ 이전에 풀었던 완전탐색의 경우는 N의 크기가 커질경우 스택 초과 에러나 시간 초과를 받을 수도 있지만 DP는 O(N)으로 접근이 가능하기 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1463.java 다음 3가지 연산을 이용해서 1로 만들 수 있는 최소의 연산 수를 구하여라. 1) 3으로 나눠 떨어진다면 3으로 나눈다. 2) 2로 나눠 떨어진다면 2로 나눈다. 3) 1을 뺀다. 처음 생각생각나는건 2가지 방법이였다. BFS를 이용해서 3개의 연산을 차례로 진행해 나가면서 1로 만들어졌을 때 카운트 변수를 출력하는 방법과 다이나믹 프로그래밍을 이용해서 값을 찾는 방법이였다.▶ 문제 분류가 DP로 되어있으므로 DP 식으로 풀어보았다. 다음 생각생각을 단순히 하면서 접근을 해보자. 1로 만들수 있는 최소 연산 수를 구하는 법이다. Bottom Up 과 T..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q16637.java 괄호를 추가하여 식의 최대값을 얻어내라. 괄호 안에는 1개의 연산자만 있을 수 있으며 괄호는 1중으로만 칠 수 있다. 즉, 2중 괄호 이상은 안된다. 연산자의 기호에 상관없이 앞에서부터 연산을 한다. 처음 생각어디서 풍문으로 듣기로는 11월 삼성 SW 역량테스트 A형 문제와 비슷하다고합니다. 다음 생각평범한 식이 주어지면 괄호를 쳐서 최대값이 되도록 만들어야한다. 즉, 식을 계산해 주어야한다.▶ 따라서 숫자와 식을 분리해서 각각의 List에 넣어주었다. ▶ 식은 숫자가 먼저 시작되므로 부호의 i 번째 index는 식의 i+1 번째 index와 연관이..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q7569.java 이전 토마토 문제의 확장 문제이다. 상자가 여러겹 쌓여있으며 익은 토마토가 위 아래 상자의 토마토에까지 영향을 끼친다. 처음 생각우선 이전 토마토 문제인 [백준] 7576번 토마토 와 풀이를 똑같이 했다.▶ 다른점이라면 위 아래 상자를 생각해줘야 한다는 것이였다. 다음 생각한 상자를 사용할 때 2차 배열로 표현할 수 있었다. 그럼 문제가 간단해진다. 층을 표현할 위치를 추가해서 3차 배열로 표현을 해주었다.▶ [층][그 층의 토마토 x 위치][그 층의 토마토 y 위치]로 배열을 사용하였다.▶ 기존의 문제에서 배열로 주변 토마토들의 BFS 탐색을 진행하였..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q7576.java 토마토가 담겨있는 박스의 상태를 준다. 0은 익지않은 토마토, 1은 익은 토마토, -1은 토마토가 없는 공간을 나타낸다. 익은 토마토의 주변에 익지않은 토마토가 있다면 그 토마토를 하루 뒤에 익게만든다. 이 때, 박스 안의 모든 토마토를 익게 만드는 때까지 걸리는 날짜를 출력하여라. 모든 토마토를 익게만들수 없다면 -1을 출력하여라. 처음 생각익은 토마토(1)을 기준으로 상 하 좌 우 탐색을하고 또 익은 토마토로 인해 익게된 토마토로 부터 탐색을 해나가면서 진행을 해야하므로 4방향 모두를 살피면서 탐색할 수 있는 BFS 탐색을 이용하여 풀었다. 다음 생..
- Total
- Today
- Yesterday