목록분류 전체보기 (159)
우당탕탕 개발일지

Java -> Python파이썬 공부를 시작해볼려고 한다. 그래서 이번에는 파이썬으로 풀어보겠다.Java 풀이 풀이Java에서 Python으로 변경하면서 좀 어려웠던 부분을 정리해보도록 하겠다. 2차원 배열 선언miro 변수는 1차원 배열로 선언 후, list 값을 원소로 넣어 2차원 배열을 구현했다. check 변수는 처음에 [[False] * m] * n으로 선언했더니 원하지 않는 결과가 나왔다. check[0][0] = True 를 수행하면 모든 check[i][0] 값이 True로 변경되었다.[...] *n 를 하게되면 동일한 객체를 n개 생성하게 되어 모든 [i][0] 값이 변경된다고 한다. 따라서 다른 객체를 선언하고 싶을 때에는 for _ in range(n)를 통해서 생성해야 한다. ..

문제미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입출력 예 풀이DFS, BFS 공부했지만 정말 감이 안왔다...그래서 다시! 블로그 보면서 풀이 방법을 읽으면서 코드를 짜봤다. 처음에는 깊이 우선 탐색인줄 알았으나 너비였다...! miro에는 입력값을 저장하고 check에는 방문했으면 true 값을 저장한다. 배열에 주어진 입..

문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 풀이DFS와 BFS 알고리즘을 몰라서 계속 대기업 코테 손도 못 댔다.... 그래서 이 알고리즘을 공부하기 위해 백준에서 문제를 찾았다. DF..

문제이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. (1개 이상 선택)예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 풀이1차 시도: 시간 초과n의 최대값이 100,000인데 2중 for문이라 시간초과가 발생하는 것 같다.Dynamic Programming 문제인데 이를 제대로 사용하지 못했다.public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i =..

문제n: 박스 개수w: 한줄에 박스 개수num: 빼고 싶은 박스 번호 풀이boxArr 2차배열에 제시된 그림처럼 박스 번호를 저장했다.짝수와 홀수에 따라서 저장되는 식을 만들어 넣었다짝수: w * i + (j+1)홀수: w * (i+1) - j 저장하면서 꺼내려고 하는 박스 번호와 마지막 박스 번호를 각각의 변수에 저장했다.꺼내려고 하는 박스위에 몇줄이 있는지 확인하고 그 값을 출력하면 끝..!이 과정이 너무 오래걸림.... ㅠ 다른 사람 코드를 보니 배열에 저장하는 경우는 없었다... 넘 무식하게 푼것 같다...ㅎ다른 방법을 공부해봐야겠다. 최종 코드class Solution { public int solution(int n, int w, int num) { int h = n/w +..

문제풀이1번째 시도: 실패예시 문제는 다 맞았다...! 하지만 틀렸다고 나온다...import java.util.*;public class Main { private static int[][] aptFill(int[][] apt, int downk, int n) { if(apt[downk][n] == 0) { apt = aptFill(apt, downk-1, n); } for(int i=2; i 질문 게시물에 올린 답변에 반례를 알려주셨다. 덕분에 문제인 부분을 찾았다.1번 TC에서 답을 출력하고2번 TC에서 답을 구하는 과정에서 1번 TC에 수행했던 'apt[downk + 1][i]' 값에 apt[downk][i] 값을 계속 ..

문제같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다. 입출력 예 풀이나는 큐에 삭제할 시간과 개수를 저장해서 관리했다.answer: 결과값serverCount: 현재 서버 개수timeQueue: {삭제한 시간, 개수} 1. 서버 증설해야 하는 경우조건1. 기준 인원보다 접속인원이 이상일 경조건2. 필요한 서버 수보다 현재 서버 수가 적을 경우 해당 조건에 충족하면 증설 회수와 서버 개수 설정한다.그리고 나중에 서버가 삭제 시 필요한 정보를 Queue에 저장한다. 2. 서버 삭제해야 하는 경우조건1. 삭제 정보가 있는 경우조건2. 삭제 시간이 되었을 경우 조건을 충족하면 서버 개수를 재설정 후, 해당 삭..

문제양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 입출력 예 풀이사실 어떻게 하라는건지 감이 안옴..... 그래서 일단 엑셀에 한번 표현! '질문하기' 살펴보니까 오른쪽 -> 아래 -> 왼쪽 -> 위 이걸 생각하면서 언제 방향을 바꿀지에 대해서 고민해보라고 했다.. 처음에는 이중 반복문으로 잡고 있다가 while문 사용해보기로..! 변수는 총 4개가 필요했다. row : 행 번호col : 열 번호num : 저장할 숫자d : 이동 방향을 의미하는 변수* 변수 d는 아래와 같은 규칙으로 이동해보기로 했다.0: 오른쪽, 1: 아래, 2: 왼쪽, 3: 위 ..