- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/9e3f1cab79c24305845221c0482f852a 안녕하세요! 해설강의 잘 들었습니다. 먼저 강의 전에 문제 풀때 제가 생각한 방식은 인덱스 0부터 *나올때까지 1씩 증가하면서 비교, 인덱스 마지막부터 *나올때까지 1씩 감소하면서 비교 해서 NE, DA 출력하게 만들었습니다. Dev C++에서는 출력이 올바르게 나오지만 백준 문제에서 코드를 작성했을땐 틀렸습니다로 나옵니다. 반례나 어느부분이 틀렸는지 궁금해서 문의드립니다!
변화만 생기는 곳만 체크한다고 하셨는데, 예로 들어 한 행의 두 원소를 바꾸면 그 두 원소의 열과 그 행을 살펴보면 된다고 하셨는데, def get_best(y, x): global N, matrix best = 0 # columns bef = '-' value = 0 for j in range(N): if bef == matrix[y][j]: value += 1 else: value = 1 bef = matrix[y][j] best = max(best, value) # rows bef = '-' value = 0 for i in range(N): if bef == matrix[i][x]: value += 1 else: value = 1 bef = matrix[i][x] best = max(best, value) return best 왜 바꾼 원소 기준으로 그 원소 위치의 하나의 행과 열만 보는걸로 코드를 짜셨나요? 설명과 코드가 달라서 약간 이해가 안 갑니다 ㅜ
안녕하세요, 큰돌님. split() 함수에 대해 잘 학습 후 공부 하던 중 궁금한 게 생겨 질문드립니다. split() 함수의 경우 문자열을 특정 구분자 delimiter를 기준으로 분할하는 기능을 제공해주고 있습니다. 큰돌님의 예시와 같이 " " (빈칸) 으로 구분하여 문자열을 분할하는 경우에는 c++ 표준 라이브러리 <sstream> 헤더에 포함된 'istringstream' 을 사용하는 것이 더 효율적인거 같은데 큰돌님께서는 istringstream에 대해서는 어떻게 생각하시는 지 궁금합니다. 좋은 강의 감사합니다. 질문자 올림.
list의 시간복잡도를 설명하실 때 visited = [True, True, False, True, False, True, False] # if visited[3] == True: if visited[3]: print("room number 3 visited") 이 코드에서 입력값 n에 따라 visited의 길이가 n으로 바뀌는 거면 visited 리스트를 n개의 원소로 초기화하는데에 걸리는 시간은 O(n)이므로 , if visited[3]: 이부분에서의 시간복잡도가 O(1)이여도 코드의 총 시간 복잡도는 O(n) 아닌가요 ??
우선 설명해주신 방법을 이해하였는데 강의를 듣기전 혼자 풀어본 방법으로는 주어진 알파벳의 위치를 담는 list를 만들어 넣어 놓고 이후에 문자에서 해당 알파벳이 아니면 그 문자의 위치가 리스트의 위치에 해당하는 값과의 차를 구하여 절대값을 씌워 구하게 하였습니다. 문제는 채점중 2번 문제가 런타임 에러가 나오는데 어느 부분에서 문제가 되는지 알고 싶습니다! import java.util.*; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); String word = in.next(); Character standard = in.next().charAt(0); List<Integer> position = new ArrayList<>(); for (int i=0; i<word.length(); i++){ if(word.charAt(i) == standard) position.add(i); } int lf = 0; String result = ""; int check = 0; for(int i=0; i<word.length(); i++){ if(word.charAt(i) == standard) { result += "0"; if(check != 0) lf++; check = 1; } else{ int left = Math.abs(position.get(lf)-i); int right = Math.abs(position.get(lf+1)-i); if(left>right) result += right; else result += left; } if(i == word.length()-1) break; else result += " "; } System.out.println(result); } }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! http://boj.kr/8c457baae3554ac38764f81d351201bc 제가 생각한 문제 풀이는 총 9명 키의 합에서 100을 빼면 난쟁이가 아닌 2명 키의 합이 나온다고 생각했습니다. 9명의 키합 - 100의 값을 ss로 정하고 for문을 돌면서 2명의 합이 ss가 나오면 해당 두명을 erase를 사용해 제거해서 출력하는 방식으로 코딩했습니다. Devc++에서 입력받고 출력도 잘 나오는데 반례가 있는지 백준 제출하면 틀렸다고 나오는데 어떤게 문제인지 모르겠어 질문남깁니다! 감사합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 안녕하세요 저는 경로에 대해서 string으로 저장하고 탈출시 출력하는 로직으로 작성했는데 왜 메모리 초과가 나는지 모르겠습니다. 알려주시면 감사하겠습니다... http://boj.kr/92e022062d0148faa40d478f052dfc89
안녕하세요! 궁금한점이 있어 질문 드립니다. fill(&visited[0][0], &visited[0][0] + 101 * 101, 0); 초기화 해주는 부분은 이해를 하였습니다. 그런데 &visited[0][0] + 101*101 이 부분이 이해가 가지 않습니다. 깊이 생각하지 않고 배열의 모든 부분을 순회 하면서 초기화 해준다고 생각하면 될까요?
안녕하세요, 1-L 문제 이분탐색으로 풀어보았는데요. lower_bound함수는 목표값을 찾지 못하면 해당 벡터 끝 다음 이터레이터 즉 코드상 arr.end()를 반환하니 lower_bound 실행 후 arr.end()인지 아닌지만 체크해주면 값을 찾았다로 생각했습니다. 그러나 실행시켜보니 조건문에 추가로 &&*it == goal를 적어주어야 성공이고 밑에 첨부한 링크와 같이 이 과정을 생략한다면 틀렸습니다라고 나옵니다. 이유를 알 수 있을까요? http://boj.kr/7f90a9926f17477394e238b900523acc
안녕하십니까 강의 잘 보고 있습니다. 결론적으로 테스트 케이스는 성공하였는데 왜, 어떠한 부분에서 실패가 떴는지 감이 잡히지 않아 글을 올립니다. 저는 map을 사용하여 풀어보았습니다. need라는 변수를 만들어 map을 한 번 순회하면서 필요한 값이 무엇인지 담고, 그 값이 map에 있으면 (현재 for문의 값, 필요한 값) 을 각각 마이너스를 해주는 형식으로 했습니다. 조건절에는 빌드를 해보니 map에 담겨 있지 않은 요소를 비교할 때 공간이 생기면서 값이 0으로 생겨나는 것 같아서 둘 다 값이 있을 때만 실행하게 하였습니다. 아래는 주소입니다. http://boj.kr/6072aa9514324b318f45514ef0412868
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/a88688ffea6947d2ada21dbb5775c405 안녕하세요 해당 문제를 입력을 string s로 받고 s를 0부터 sizeof(s)까지 돌면서 a~z에 해당하는 값을 1씩 증가시켜 마지막에 모두 출력했는데 어떤 부분에 오류가 있는지 모르겠습니다!
입력을 받을 때마다 조건문 돌려서 판별할 생각을 못하고 배열로 다 받아서 했더니 문제를 더 어렵게 풀어버렸습니다. 음.. 강의 코드 보면서 제가 푼 문제가 이렇게 쉽게 풀릴 수 있는 문제구나라고 알게 되었습니다.혹시 제 코드에 문제점이 있는지 확인해주실 수 있으신가요? 채점 파일에서는 다 맞았다 뜨는데 혹시 몰라서 질문 드립니다. 좋은 강의 항상 감사드립니다. 강의 보면서 열심히 공부하겠습니다. #include <iostream> #include <stdio.h> #include <string> #include <fstream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector<int> table(n); for (int i = 0; i < n; i++) cin >> table[i]; int max = 1; int cnt = 1; int idx = 0; int prev = table[0]; int count = 1; while (idx + count < table.size()) { if (table[idx + count] >= prev) { cnt++; } else { idx = idx + count; cnt = 1; count = 0; } prev = table[idx + count]; count++; if (cnt > max) max = cnt; } cout << max << "\n"; return 0; }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/604e8201aae24300845cde414a1f4416 http://boj.kr/604e8201aae24300845cde414a1f4416 선생님 강의보고 생각하면서 유사하게 만들어봤는데 틑렸다고 나옵니다 ㅠㅠ 정답 코드랑 비교해도 어떤 부분이 틀렸는지 확인이 안되서 ㅠㅠ 질문 남깁니다. 감사합니다.