- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. const input = `5 5 1 3 1 2 3`.split("\n"); let M = Number(input[0].split(" ")[1]); let arr = input[1].split(" ").map((str) => Number(str)); function solution(arr) { let count = arr.filter((num) => num <= M).length; // 5 let p1 = 0; let p2 = 1; let sum = arr[p1] + arr[p2]; // 4 while (p1 !== p2) { if (sum < M) { count++; p2++; sum += arr[p2]; } else if (sum === M) { count++; sum -= arr[p1]; p1++; } else if (sum > M) { sum -= arr[p1]; p1++; } } return count; } console.log(solution(arr));
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수업해주셨던 코드랑 다른건 없을까요 ? const input = `8 6 1 2 1 3 1 1 1 2`.split("\n"); let M = Number(input[0].split(" ")[1]); let arr = input[1].split(" ").map((str) => Number(str)); function solution(arr) { let p1 = 0; let p2 = 1; let sum = arr[p1] + arr[p2]; let count = 0; while (p2 < arr.length) { if (sum < M) { p2++; sum += arr[p2]; } else if (sum > M) { sum -= arr[p1]; p1++; } else if (sum === M) { sum -= arr[p1]; p1++; count++; } } return count; } console.log(solution(arr));
vector<int> s {4, 3, 3, 5, 1, 2, 3}; s.erase(unique(s.begin(),s.end()),s.end()); for(int i : s) cout << i << " ";의 결과가 4,3,5,1,2(,2,3 제거) 이렇게 되어야 하지 않나요? 왜 4,3,5,1,2,3으로 나오는 건지 잘 모르겠습니다.
재귀를 이용한 순열 코드를 학습하면서 이와 관련된 백준 문제를 풀어보려고 하였습니다! 백준 15649 N과 M(1) 문제 같은 경우 순열을 출력하는 문제여서 학습한 코드를 사용하면 가능할 것이라고 생각했습니다. 그런데 교안에 있는 코드는 순열의 오름차순이 보장이 안되는 것 같습니다. 교안에 있는 코드를 최대한 활용해서 백준 15649번 문제를 풀고 싶은데, 순서가 오름차순이 되도록 순열을 출력하려면 교안의 코드를 어떻게 수정해야 할지 모르겠습니다! https://www.acmicpc.net/problem/15649
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include<algorithm> #include<queue> #include<numeric> #include<map> #include<cstring> using namespace std; typedef long long ll; long double X, Y; int Z; bool check(ll mid) { double total = X; double win = Y; total += mid; win += mid; int num = (win / total) * 100; return Z < num; } int main() { cin >> X >> Y; Z = (Y / X) * 100; int start = 1; int end = 1000000000; int ans = -1; while (start <= end) { ll mid = start + end; mid /= 2; if (check(mid)) { ans = mid; end = mid - 1; } else start = mid + 1; } cout << ans; return 0; } 다음과 같이 작성했습니다. Z = (Y / X) * 100; 이 부분에서 X,Y가 double이면 오답 long double이면 정답이 나옵니다 . double로 선언하면 어떤 문제점이 존재하나요??
http://boj.kr/8eda4400f8474a6daf339737ce6eda82 선생님 제가 dfs시 n*m범위를 벗어나면 1을 return하는 코드를 짜보았습니다. 그런데 범위에 벗어나면 이라는 if 문에 제 코드가 접근을 못합니다. 혹시 이유를 찾아주시면 정말 감사하겠습니다!!
선생님 2s 문제에 입력이 65 31 43 64 53 45 라고 들어올경우. 한번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호는 1-3-5-4-6으로 5가지 입니다. 이때 만약 선생님이 쓰신 코드처럼 dfs에 visited를 설정한다면 1-3-4-6을 탐색한후 1-3-5-4-6을 탐색하려면 4가 이미 visited로 겹치기에 1-3-5-4-6경로를 탐색을 안하게되는것 아닌가요??
안녕하세요, 선생님 1) m 변수에 바로 arr 정렬해서 넣어서 원래 값과 비교하면 왜 답이 안나오는 걸까요..? function sol(arr){ let ans =[]; let m = arr.sort((a,b)=>a-b); for (let i = 0; i < arr.length; i++){ if (arr[i] !== m[i]) ans.push(i+1); } return ans; } let m = [120, 125, 152, 130, 135, 135, 143, 127, 160]; console.log(sol(m)); 2) let m = arr; arr.sort((a,b)=>a-b); 이렇게 했을때도 답이 안나오는 이유는 무엇일까요? slice()로 복사해야하는 이유가 있나요?
안녕하세요 계속 오류가 떠서 여쭤봅니다. 이 코드는 어떤 부분이 잘못되었는지 잘 모르겠습니다. import sys import os current_path=os.getcwd() sys.stdin=open(current_path + "\\python\\코딩테스트 강의 내용\\01 코드 구현력\\복습 파일\\" + "input.txt", "rt") N=int(input()) num_arr=list(map(int, input().split())) def digit_sum(x): result=0 for idx in range(0, len(str(x))): result+=int(str(x)[idx]) return result # 각 자리수 더한 합 for idx in range(N): arrMax=-21470000000 answer=0 if digit_sum(num_arr[idx])>arrMax: arrMax=digit_sum(num_arr[idx]) answer=num_arr[idx] print(answer)
안녕하세요, 선생님! 많이 부족하지만 천천히 선생님 수업 따라가고 있는 학생입니다.. 다름이 아니라 해당 문제를 풀면서 선생님께서 제시해주신 반례나 백준 질문에 올라온 반례도 대입 했을 때 기대값을 잘 출력하고 있는데 왜 맞왜틀인지 모르겠습니다ㅠㅠ 코드 한 번 피드백 부탁드립니다! 소스코드 - http://boj.kr/9bc5b7b855044809bdbfa4d5762b69aa 만약 N = 10 M = 3 J = 5 일 경우 10 > 5 > 1 > 7 > 2 순으로 사과가 떨어진다고 가정 했을 때 그림으로 그려보면 아래의 이미지와 같이 바구니에 담을 수 있는 최소 이동값이 21 이 도출되지 않나 생각하는데, 혹시 제가 잘못 이해하고 있는걸까요?
선생님 어떻게 하면 다르게 풀 수 있을까 생각하던 중 dfs 자체에 치즈가 있는 곳을 0으로 바꿔주면서 방문처리하면 어떨까싶은 발상으로 다르게 풀어봤는데 95%쯤에서 틀렸다고 뜨네요 어떤 반례가 있는지 도저히 못 찾겠습니다. 도와주세요ㅠㅠ http://boj.kr/b5740f5f59ce438aa9c890edbce7aba7
안녕하세요 큰돌님 틀린부분을 찾는것이 어려워 질문드립니다. 아래는 공유 코드입니다 http://boj.kr/251487f67822488681eee85d4012f297 불이 퍼지지 못하거나 없는경우를 처리해주지 않앗을땐 61%가 나왔는데 처리해주고나서 바로 틀렸다 나오네요.. 사람들이 올려놓은 테스트 케이스도 다 잘 나오는데 어떤부분이 잘못되서 안되는건지 아무리봐도 모르겠습니다 도와주십쇼 ㅠ