묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이 풀이는 어떤가요?
package hash; import java.util.HashMap; import java.util.Scanner; public class Anagram { public static String solution(String str, String str2) { String result = "YES"; HashMap<Character, Integer> map = new HashMap<>(); for(char ch : str.toCharArray()) { map.put(ch, map.getOrDefault(ch, 0)+1); } for(char ch : str2.toCharArray()) { map.put(ch, map.getOrDefault(ch, 0)-1); } for(char ch : map.keySet()) { if(map.get(ch) != 0) { result = "NO"; break; } } return result; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); String str2 = sc.next(); System.out.println(Anagram.solution(str, str2)); } }str, str2 둘다 같은 Map을 써서 str에 +1, str2에 -1 해주어서 0이 아닐시 NO를 반환하게 코딩하였습니다. 답은 맞게 나오는데 허점? 이 있나 궁금하여 글 남깁니다.
-
미해결자바 코딩테스트 - it 대기업 유제
혼자서 푼 문제 확인 부탁드립니다.
package com.company.대기업유제.너비우선탐색; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.Queue; class 숲속의기사 { static class Pos { int x; int y; public Pos(int x, int y) { this.x = x; this.y = y; } } public int solution(int[][] board) { int answer = Integer.MAX_VALUE; /** * 영희는 궁전에서 기사가 지키는 숲을 통과해서 나가야함 * 안전하게 가기위해 기사에게 산딸기를 줘야함 * 최대한 빨리 기사에게 산딸기를 줘야함 * 숲의 지도: R * C 판 형태 * 영희 시작위치, 기사 위치, 산딸기 위치가 표시, 영희가 가지 못하는 위치 * 영희는 산딸기 없이 기사를 지나쳐갈수없음 * 동서남북 하루에 한칸씩 이동 * 영희가 산딸기를 기사에게 가져다주는 가장 짧은 날의 수 * 0 : 영희가 움직일수 있는곳 * 1: 영희가 움직일수 없는곳 * 2. 영희의 시작위치 * 3: 숲속기사의 위치 * 4: 산딸기 위치 * * */ //산딸기 위치 저장 List<Pos> strawberryList = new ArrayList<>(); for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] == 4) { strawberryList.add(new Pos(j, i)); } } } for (Pos pos : strawberryList) { //* 2. 영희의 시작위치 int count1 = BFS(pos.y, pos.x, board, 2); //* 3: 숲속기사의 위치 int count2 = BFS(pos.y, pos.x, board, 3); answer = Math.min(count1 + count2, answer); } return answer; } private static int BFS(int y, int x, int[][] board, int posType) { //산딸기 위치들로부터 영희의 최소거리, 기사의 최소거리 BFS 각각 한번씩 돌기 Queue<Pos> queue = new ArrayDeque<>(); //BFS를 위한 queue queue.add(new Pos(x, y)); int[] dx = new int[]{-1, 0, 1, 0}; int[] dy = new int[]{0, -1, 0, 1}; boolean[][] ch = new boolean[board.length][board[0].length]; int day = 0; while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { Pos pos = queue.poll(); //현재위치로부터 if(board[pos.y][pos.x] == posType) return day; for (int j = 0; j < 4; j++) { //동서남북 이동 int moveX = pos.x + dx[j]; int moveY = pos.y + dy[j]; if (moveY < 0 || moveX < 0 || moveX >= board[0].length || moveY >= board.length) continue; if(ch[moveY][moveX]) continue; if (board[moveY][moveX] == 1) continue;//1: 영희가 움직일수 없는곳 ch[moveY][moveX] = true; queue.add(new Pos(moveX, moveY)); } } day++; } return -1; } public static void main(String[] args) { 숲속의기사 T = new 숲속의기사(); System.out.println(T.solution(new int[][]{{4, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 1, 0, 0}, {0, 2, 1, 1, 3, 0, 4, 0}, {0, 0, 0, 4, 1, 1, 1, 0}})); System.out.println(T.solution(new int[][]{{3, 0, 0, 0, 1, 4, 4, 4}, {0, 1, 1, 0, 0, 0, 1, 0}, {0, 1, 4, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 1, 1, 0}, {4, 0, 0, 0, 1, 0, 0, 0}, {4, 1, 0, 0, 1, 0, 0, 0}, {4, 0, 0, 0, 0, 0, 1, 2}})); System.out.println(T.solution(new int[][]{{4, 1, 0, 1, 0}, {0, 1, 0, 1, 0}, {0, 0, 2, 3, 4}, {0, 1, 0, 1, 0}})); } }딸기위치를 기준으로 영희와 숲속의 기사의 최단거리를 각각 따로 BFS로 구하였는데 괜찮은 방법인가요?
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파일 읽는데 이상한 에러 현상
안녕하세요 제 코드로 채점을 받으니 강사님이 제공하신 input.txt 케이스 5개 중, 케이스2 input.txt를 제외하고 나머지 케이스에서 전부 에러가 나옵니다 에러 내용은 Traceback (most recent call last): File "c:\Users\seheo\OneDrive\문서\바탕 화면\코테채점\AA.py", line 11, in <module> tmp = int(input())EOFError: EOF when reading a line인데요아마 파일을 제대로 못 읽는 거 같습니다.(그냥 제공된 txt 파일을 그대로 가져다 파일 이름만 바꿔서 썼습니다.)제 코드는 import sys sys.stdin=open('input.txt','rt') k, n = map(int, input().split()) # print(n, m) arr = [] largest = 0 for i in range(n): tmp = int(input()) arr.append(tmp) largest = max(largest, tmp) # print(arr) # k개 랜선 길이 제각각 # 잘라서 n개의 랜선으로 만들기 # 이때 표준 최대 길이 구하기 # 1. 정렬해서 제일 큰 값의 절반으로 나눈 몫들 더해보기 # 2. 만약 n개가 합이 되면 그것? cnt = 0 lt = 1 rt = largest res = 0 while lt <= rt: mid = (lt+rt)//2 cnt = 0 for i in range(k): cnt += arr[i]//mid if cnt >= n: res = mid lt = mid + 1 else: rt = mid - 1 print(res) 입니다 왜 해당 현상이 나오는 것일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 질문드립니다.
안녕하세요 선생님!http://boj.kr/6ef33cd0118348bf9e15f38303108e38이렇게 하면 예시로 주어진 입출력 1,2는 맞게 나오는데 결과는 오답으로 나옵니다.어느 부분에서 제가 잘못 생각한 것인지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-I_11723_집합
안녕하세요 큰돌님!저는 이 문제에서 입력을 cin으로 받고 그 이후에는 getline으로 받는 방법으로 풀었습니다. cin 뒤에 오는 개행 문자를 제거하기 위해 cin.ignore();를 했지만 50%만 통과하고 틀렸다고 합니다 ㅠㅠ 혹시 입력 받을 때 더 고려해야하는 부분이 있는건가요? 또한 all에서 모든 비트를 켤 때 m=(1<<20)-1;이 아니라 m=(1<<21)-1;로 한건 그냥 범위를 여유롭게 잡으신 건가요?http://boj.kr/040dd72f053a438f833591a06ba882b8
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
코딩 센세 입니다!
이번에 이직 후 회사에서 많은 것을 배우고 밤늦게까지 정리하며 잠드는 날들을 반복하고 있습니다! (외국어의 벽도 느끼고 있습니다 ... 하하 ) 질문해주신 질문들의 답변을 못달아드려서, 강의 수정을 빨리 빨리 못해드려서 정말 죄송합니다 ㅠㅜ... 항상 많은 질문 해주시고 공부해주시는 분들 감사합니다! 바로 답변을 못달아드릴때도 있지만 제 강의 열심히 들으시고 생기시는 궁금증들 질문해주시는 건 정말 정말 기뻐요 😄 제가 바로 답을 못 드리더라도 꼭 답을 드릴테니 간단한 궁금증이나 생각들도 모두 커뮤니티에 꼭 남겨주세요! 항상 많은 힘을 주셔서 감사합니다 😃 !!!!! 오늘도 다들 화이팅이에요!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H_2234_성곽
안녕하세요 큰돌님!마지막에 벽 하나를 허물어 최대 영역수를 구하는 부분에서 질문이 있습니다.1. 큰돌님은 ->,↓ 방향으로만 탐색하며 벽을 허무셨지만,저는 처음부터 그렇게 생각하지 못해서 각 칸마다 4방향을 모두 탐색하는 알고리즘( for(int k=0; k<4; k++) )으로 작성하였습니다. 예제코드는 통과하였지만 제출 하면 틀렸다고 뜸니다..어디서 반례가 생기는지 알 수 있을까요?ㅜㅜ 나머지 부분은 다 비슷하게 작성하였습니다. 또한 compSize[2504] 사이즈를 50이 아닌 2500으로 설정하셨는지도 궁금합니다. compSize의 최댓값은 맵의 크기인 n*m=50이 아닌가요? http://boj.kr/3c4e0499d8a740a0a39610f71efd033c
-
미해결자바 코딩테스트 - it 대기업 유제
이렇게 풀어도 되는지 궁금합니다.
import java.util.*; class Node implements Comparable<Node>{ int time; char state; public Node(int time, char state){ this.time = time; this.state = state; } @Override public int compareTo(Node o){ if(this.time == o.time)return this.state - o.state; return this.time - o.time; } } class Solution { public int solution(int[] laser, String[] enter){ int answer = 0; ArrayList<Node> arr = new ArrayList<>(); for(String s:enter){ String t = s.split(" ")[0]; String l = s.split(" ")[1]; int start = Integer.parseInt(t.split(":")[0])*60 + Integer.parseInt(t.split(":")[1]); int end = start + laser[Integer.parseInt(l)]; arr.add(new Node(start, 's')); arr.add(new Node(end, 'e')); } Collections.sort(arr); int cnt = 0; for(Node x:arr){ if(x.state == 's')cnt++; else{ cnt--; answer = Math.max(answer, cnt); } } return answer; } public static void main(String[] args){ Solution T = new Solution(); System.out.println(T.solution(new int[]{30, 20, 25, 15}, new String[]{"10:23 0", "10:40 3", "10:42 2", "10:52 3", "11:10 2"})); System.out.println(T.solution(new int[]{30, 20, 25, 15}, new String[]{"10:23 0", "10:40 3", "10:42 2", "10:52 3", "15:10 0", "15:20 3", "15:22 1", "15:23 0", "15:25 0"})); System.out.println(T.solution(new int[]{30, 20, 25, 15}, new String[]{"10:20 1", "10:40 1", "11:00 1", "11:20 1", "11:40 1"})); System.out.println(T.solution(new int[]{30, 20, 25, 15}, new String[]{"10:20 1", "10:20 1", "10:20 1", "10:20 1", "10:20 1"})); } } 입문강의 결혼식과 비슷한 문제로 생각해 이렇게 짰는데 답은 맞게 나왔습니다. 혹시 반례가 있을까요? 아니면 이 방법도 맞는 방법일까요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
풀이입니다.
<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(a, b, c){ let arr = [a,b,c] let sort = arr.sort((a,b) => a-b); return sort[0] + sort[1] <= sort[2] ? "NO" : "YES" } console.log(solution(13,4, 17)); </script> </body> </html>이런식으로 풀어도 괜찮은가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이해되지 않는 부분이 있어서 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. rt-lt+1의 값이 왜 카운트 해야 하는 값이랑 일치하는 걸까요?최종적으로 카운트 해야 하는 값이 같다는건 알겠는데 왜 같은지 이해가 안됩니다ㅠㅠ
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
43번 뮤직비디오 질문
안녕하세요 강사님 🙂43번 뮤직비디오의 채점 폴더의 2번 케이스의 output이 23이 되어야 하는게 아닌지 질문드립니다.현재 2번 케이스<input>10 36 5 8 5 6 8 7 6 6 7<output>24배열 정렬, 5 5 6 6 6 6 7 7 8 8(5, 5, 6, 6) (6, 6, 7) (7, 8, 8)(5, 5, 6, 6) = 22(6, 6, 7) = 19(7, 8, 8) = 2324가 아닌 23이 최소 비용이 되는 값이 아닌지 질문드립니다제가 작성한 코드void swap(int* a, int* b) { int temp = *a; a = b; *b = temp; } int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = low - 1; for (int j = low; j < high; j++) { if (arr[j] < pivot) { i++; swap(&arr[i], &arr[j]); } } swap(&arr[i + 1], &arr[high]); return i + 1; } void quickSort(int arr[], int low, int high) { if (low < high) { int pivotIndex = partition(arr, low, high); quickSort(arr, low, pivotIndex - 1); quickSort(arr, pivotIndex + 1, high); } } int main() { int N, M; scanf_s("%d%d", &N, &M); int* pN = (int*)malloc(sizeof(int) * N); for (int i = 0; i < N; i++) { scanf_s("%d", &pN[i]); } // 배열 정렬 quickSort(pN, 0, N - 1); int lt = 1, rt = 0; // 배열의 모든 요소를 더하여 rt 초기화 for (int i = 0; i < N; i++) { rt += pN[i]; } while (true) { int cnt = 0, sum = 0; int mid = (lt + rt) / 2; if (mid == lt) { printf("%d", rt); break; } if (mid == rt) { printf("%d", rt); break; } // 누적 합이 mid를 넘으면 카운트 증가 for (int i = 0; i < N; i++) { if ((sum + pN[i]) > mid) { sum = 0; cnt++; } // 마지막 배열의 경우 카운트 증가 if (i == N - 1) cnt++; sum += pN[i]; } // 카운트에 따라 이분 탐색 범위 조절 if (cnt <= M) { rt = mid; } else { lt = mid; } mid = (lt + rt) / 2; } // 동적 할당한 배열 메모리 해제 free(pN); return 0; } break; } if (mid == rt) { printf("%d", rt); break; } // 누적 합이 mid를 넘으면 카운트 증가 for (int i = 0; i < N; i++) { if ((sum + pN[i]) > mid) { sum = 0; cnt++; } if (i == N - 1) cnt++; sum += pN[i]; } // 카운트에 따라 이분 탐색 범위 조절 if (cnt <= M) { rt = mid; } else { lt = mid; } mid = (lt + rt) / 2; } // 동적 할당한 배열 메모리 해제 free(pN); return 0; }
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
22479번 문제 런타임 에러 도와주세요 ㅠㅠ
24479번, 강의 사진과 같이 아래 링크처럼 파이썬으로 코딩했는데, 런타임 에러가 나고 있어요 ㅠㅠ 도와주세요 https://www.acmicpc.net/source/70097735 강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요! 질문할 때 가장 정확하게 이해할 수 있습니다.해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다!취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :(이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요!이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등)에 관련한 질문을 주시면 답변 드리겠습니다 :)"이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 :)
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
60번 문제 100점 으로 나오지만 제 코드가 응용력이 떨어진다고 봐야할까요?
int n, arr[11], sum=0;void DFS(int L) { if (L > n) return; else { sum += arr[L]; DFS(L * 2); DFS(L * 2 + 1); }}int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &arr[i]); } DFS(1); if (sum % 2 == 0) { printf("YES"); } else { printf("NO"); }return 0;} 수의 합들이 2로 나누어 떨어지면 당연히 원소들의 부분집합의 합이 같으니까 더해서 sum%2==0 으로 쉽게 짰는데 강사님 풀이과정과 많이 달라서, 질문 드렸습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 사다리 조작 / 예제 입력에 따른 출력 결과는 맞는데 계속 시간초과가 납니다.
안녕하세요 선생님. 코딩테스트 강의 잘 듣고 있습니다.15684번 문제 코드를 짰는데, 답 코드랑 비교해서 로직은 맞는 것 같은데 자꾸 시간초과가 납니다.이유를 잘 모르겠어서 질문 드립니다.#include <iostream> #include <algorithm> #include <vector> using namespace std; int H, W, P; bool isGaro[12][12][32]; //[시작점][끝점][가로선을 놓을 수 있는 위치] int ans = 4; //최대값 3보다 높은 값으로 초기화 bool check() { for (int i = 1; i <= H; i++) { int now = i; for (int j = 1; j <= P; j++) { //자신 기준으로 오른쪽에 선이 있음 if (isGaro[now][now + 1][j]) { now++; //오른쪽으로 이동 continue; } //자신 기준으로 왼쪽에 선이 있음 if (isGaro[now - 1][now][j]) { now--; //왼쪽으로 이동 continue; } } if (now != i) { //한번이라도 번호가 다르면 실패 return false; } } return true; } void go(int pos ,int garoCnt) { //만약 현재 갱신된 가로선 개수보다 개수가 많으면 바로 종료 if (ans <= garoCnt || garoCnt > 3 ) return; //현재 모든 세로선이 사다리 게임을 진행했을 때 //같은 번호가 나오는 지 체크 //만약 모두 같은 번호가 나오면 //갯수 갱신한 뒤에 종료 if (check()) { ans = min(ans, garoCnt); return; } //세로선 번호 int s = pos / 1000; //가로선 번호 int p = pos % 1000; //만약 s == H이면 //다음 가로선으로 넘어가기 //cout << "세로선 번호 : " << s << ' ' << "가로선 번호 : " << p << '\n'; for (int i = p; i <= P; i++) { for (int j = 1; j <= H; j++) { //현재 위치에 있는 가로선을 추가함 if (!isGaro[j][j + 1][i] && !isGaro[j-1][j][i] && !isGaro[j][j][i]) { isGaro[j][j + 1][i] = true; go(1000 * (j + 1) + p, garoCnt + 1); isGaro[j][j + 1][i] = false; } } } } int main(int argc, char** argv) { cin >> H >> W >> P; for (int i = 0; i < W; i++) { int a, b; cin >> a >> b; isGaro[b][b + 1][a] = true; //b번 세로선과 b+1번 세로선을 a번 점선위치에서 연결 } //만약 놓여져 있는 가로선이 없다면 //0을 출력 if (W == 0) { cout << 0; return 0; } //1000 / 1000 = s //1000 % 1000 = p //1000 * s + p //세로선과 가로선 모두 1,1에서 시작 go(1000* 1 + 1,0); if (ans >= 4) { cout << -1; } else cout << ans; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 질문있습니다
왜 틀렸는지 도저히 모르겠습니다.. #include <iostream> #include <cstring> using namespace std; const int dy[2] = { 0,0 }; const int dx[2] = { -1, 1 }; int N, M, H, a, b, adj[31][21], visited[31][21], ret[21], cnt; bool isOk; void Print() { cout << endl; for (int y = 0; y < 31; y++) { for (int x = 0; x < 21; x++) cout << adj[y][x]; cout << endl; } cout << endl; } void Move(int y, int x, int start) { if (y == H + 1) { ret[start] = x; return; } bool isDown = true; visited[y][x] = start; // 좌우 확인 for (int i = 0; i < 2; i++) { int ny = y; int nx = x + dx[i]; if (ny > H + 1 || nx <= 0 || nx > 2 * N - 1) continue; if (visited[ny][nx] == start) continue; if (adj[ny][nx] == 0) continue; Move(ny, nx, start); isDown = false; } if (isDown) Move(y + 1, x, start); } bool Check() { // 값들 초기화 memset(ret, 0, sizeof(ret)); memset(visited, 0, sizeof(visited)); for (int x = 1; x <= N; x++) { Move(0, x * 2 - 1, x * 2 - 1); if (ret[x * 2 - 1] != x * 2 - 1) { return false; } } return true; } void AddLadder() { if (isOk) return; if (cnt >= 3) return; for (int y = 1; y <= H; y++) for (int x = 1; x < N; x++) { if (adj[y][x * 2] != 1 && adj[y][x * 2 - 2] != 1 && adj[y][x * 2 + 2] != 1) { adj[y][x * 2] = 1; cnt++; if (Check()) { isOk = true; // Print(); return; } AddLadder(); adj[y][x * 2] = 0; cnt--; } } return; } int main() { cin >> N >> M >> H; // 사다리 초기값 for (int y = 0; y <= H + 1; y++) for (int x = 1; x <= N; x++) adj[y][x * 2 - 1] = 1; // 가로선 정보 for (int i = 0; i < M; i++) { cin >> a >> b; adj[a][b * 2] = 1; } if (Check()) cout << 0; else { AddLadder(); if (cnt == 0) cout << -1; else cout << cnt; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-F 문제 관련 질문이 있습니다
http://boj.kr/7e750fbdd0404abeb7f5004bfc46d7d2 문제를 풀면서 for(int i = 0; i< s.size() ; i++)을 통해서 string의 각 char에 대해 접근하지 않고for(auto i : s)를 통해서 각 문자에 대해 접근하여 비교를 하려고 했는데, 디버깅을 해보니 for문 아래로 작동을 하지 않는 모습을 보입니다.혹시 이렇게 하면 안되는 이유가 있는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1189_컴백홈 전역변수 지역 변수
안녕하세요 큰 돌님, ret의 지역변수 선언과 전역변수 선언에 궁금한 점이 있습니다. ny,nx와 같이 재귀함수의 매개 변수로 사용되는 변수는 지역변수로 선언 해야 한다는 것은 이해 했습니다. 그런데 ret은 매개변수로 사용되는 것이 아니기에 전역 변수로 사용해도 된다고 생각했습니다. <질문>왜 ret을 go 함수가 호출 될 때마다 저 자리에서 초기화 해야 하는지 모르겠습니다.. 재귀가 돌 때마다 초기화 되면 ret+=dfs(ny,nx); 이렇게 누적했던 합도 초기화되는 것 아닌가요? 아니면 int ret=0;선언이 ret+=dfs(ny,nx); 이 과정 앞에서 선언되었기 때문에 return 해서 값을 누적 할 때에는 영향을 안미치는 건가요?ret을 전역 변수로 선언하면 왜 틀리는지 모르겠습니다.. 제가 아마 재귀함수의 구조를 완벽히 이해 못해서 그런 것 같긴하지만 어디를 잘못 이해하고 있는지 모르겠어서 질문 남깁니다 ㅠㅠ
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1강 문제2 (백준 # 14568)
n = int(input()) answer = 0 for i in range(1, n+1): for j in range(1, n+1): for k in range(1, n+1): if i + j + k == n: if i % 2 == 0: if j >= k+2: if i >= 1 and j >= 1 and k >= 1: answer += 1 print(answer)왜 if i >= 1 and j >= 1 and k >= 1: 이 조건이 없어도 정답처리가 되나요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-L 가설 세우는게 이해가 가지 않습니다
큰돌님 안녕하세요? 오늘 풀이 해설이 이해가 안되서 질문 들고 왔습니다.1번 가설 2:280.5 1 20.5 10.5 0.5 1이렇게 세워주셨는데세번째 줄이 각 0.5, 0.5*1, 0.5*1*2인 것은 알겠습니다.가운데 줄인 0.5 1은 어디서 나온건가요? 2번 가설 2:41100 0.5 8100 20 16020이 어디서 나온건가요..? 100*0.5는 50이라100 50 400인게 아닌가요? 3번 가설 3:40100 0.2 1 1 2100 20 20 20 40마찬가지로 20이 어디서 나온건지 모르겠습니다100 50 50 50 100이 아닌가요? 여러번 돌려보는데 모르겠어서 질문 올립니다.
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Section3_01. 두 배열 합치기에서 런타임 에러 미해결
package Section3; import java.util.Scanner; public class Q1 { /** * 내가 구현한 방법 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] first = new int[N]; for (int i = 0; i < N; i++) { first[i] = sc.nextInt(); } int M = sc.nextInt(); int[] second = new int[M]; for (int i = 0; i < M; i++) { second[i] = sc.nextInt(); } int total = N + M; int p1 = 0, p2 = 0; int[] third = new int[total]; for (int i = 0; i < total; i++) { if (p1 < N && first[p1] < second[p2]) { third[i] = first[p1]; p1++; } else{ third[i] = second[p2]; p2++; } } for (int i = 0; i < total; i++) { System.out.print(third[i] + " "); } } }3_01. 두 배열 합치기 문제에 대한 답안 작성코드 입니다. IDE에서 예제1 케이스에 대해서 직접 대입해보면 정상 작동하고, 정답 출력과 동일하게 출력됩니다. 하지만, 채점을 받아보면 1번 케이스에서 런타임 에러가 발생합니다. 계속 수정하고, 고민해봐도 어느 부분에서 런타임 에러가 발생하는지 모르겠어서 질문 남깁니다 !