묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sort방식
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님!!이 문제를 sort로도 풀 수 있을까요?주어진 문자열 두개를 split해서 sort하고 join한 값이 일치하느냐에 따라서 answer를 반환하는 로직을 세워봤습니다. 이렇게 풀어도 문제는 없을까요?function solution(str1, str2) { let answer = ""; let sortStr1 = str1.split("").sort(); let sortStr2 = str2.split("").sort(); if (sortStr1.join("") == sortStr2.join("")) { answer = "YES"; } else { answer = "NO"; } return answer; }
-
미해결자바 코딩테스트 - it 대기업 유제
회장선거 질문드립니다.
vote의 밸류값을 꼭 HashSet으로 잡는 방법 말고는 없는건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dev c++ 에서 c++98 이라 for-each 구문이 적용이 안되요.
혹시 devc++ 에서는 어떻게 해결할수잇나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
효율적인 코드인지, 강의에서 이해되지 않는 부분이 있습니다.
안녕하세요.첫번째 링크는 해설 듣기 전 제가 작성한 코드고 두번째 링크는 큰돌님 정답 코드입니다.먼저 제가 짠 코드가 괜찮은 코드인지 의견 듣고 싶고,또 큰돌님께서 짠 코드중cnt[a - 'a]이 부분이 이해가 가지 않습니다.'a'가 아스키코드인 97로 변한다는 것은 이해했습니다. 그런데a는 타입이 char니까 baekjoon을 입력받으면 반복문으로 들어갔을땐cnt[b - 97], cnt[a - 97], cnt[e - 97]...이렇게 되야하는게 아닌가요..?실제 작동은 cnt[98 - 97], cnt[97 - 97], cnt[101 - 97]이렇게 되는데char 타입의 a가 왜 아스키코드로 변하는지 잘 모르겠습니다.감사합니다.http://boj.kr/e1b91e80fb9d4a68a4e83d27661576c5https://www.acmicpc.net/source/share/1a1898996c8542889b32b4c1b2498dd0
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS/DFS 학습 중에 궁금한 점
안녕하세요, 큰돌 강사님!!졸업하고 취준 기간에도 꾸준히 학습을 하면서 도움을 받고 있습니다. 지금 BFS/DFS 복습을 하면서 궁금증이 생긴 것이 있는데, 코드 상으로 void dfs(int y, int x){visited[y][x]=1;for(int i=0; i<4; i++){ if(...visited[ny][nx]) continue;}}와 visited[y][x]=1 코드 없이 그냥 dfs를 하는 것의 차이는 무엇인 가요? 2주차에서의 dfs와 3-C 인구이동에서의 dfs의 차이점이 궁금합니다~~
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과가 나옵니다
안녕하세요 좋은 강의 감사합니다.저는 _mp[세로줄][점선] 이렇게 생각해서 구현했습니다.문제에서 나온것과는 다르게 사다리가 놓을수 있는 곳을 세로로 생각해서 코드를 짰습니다. 그래서 UP DOWN이 있습니다.구현과정에서 인덱스는 0부터 시작하도록 설정했습니다.http://boj.kr/a4dda6bde3c04184b402349de75eefbc시간초과가 나서 수정해보다가 안되서 질문올립니다. 감사합니다.
-
미해결자바 코딩테스트 - it 대기업 유제
서로 다른 빈도수 만들기
public int solution(String s){ int answer = 0; HashMap<String, Integer> map = new HashMap<>(); HashSet<Integer> hs = new HashSet<>(); //유일하게 존재해야한다 => 해시셋 사용 String[] list = s.split(""); for(int i=0; i<list.length; i++) { map.put(list[i], map.getOrDefault(list[i], 0)+1); } for(String x : map.keySet()) { int check = map.get(x); while(hs.contains(check)) { //셋에 이미 숫자가 있으면 하나를 감소 check--; if(check==0) { //0은 넣지 않는다. answer++; break; } answer++; } hs.add(check); } return answer; }이처럼 작성했는데 답은 모두 맞게 출력되는데, 강사님이 작성하신 알고리즘이랑 동일한 건가요???
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파이썬 알고리즘 코딩테스트 입문 강의와 차이점이 어떤게 있나요?
파이썬 알고리즘 코딩테스트 입문 강의와 차이점이 어떤게 있나요? 문제 차이나 난이도 혹은 업데이트된 부분이 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F질문입니다.
안녕하세요, 큰돌님아래코드의 시간 복잡도는 2^26 * 50이라고 생각해서 1초안으로 통과 된다고 생각하는데, 시간초과가 나는 이유가 궁금합니다.저의 계산법 2^26 == 10^7 10^7 * 50 = 10^81초 == 10^9통과가능https://www.acmicpc.net/source/61972721
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문입니다
안녕하세요, 큰돌님완전탐색을 해서 풀었습니다.제가 생각한 시간초과의 이유가 맞는지 궁금합니다.2^26으로 하면 시간복잡도는 대충 10^7? 10^8정도인데, cal연산의 시간복잡도는 어림잡아 50*15을 해서 10^3 정도여서 10^8 * 10^3 을 하면,시간복잡도는 어림잡아 10^11 정도가 되어 시간초과가 나는건가요?https://www.acmicpc.net/source/61970109
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-F 1로 만들기 2 질문
맞은 코드:http://boj.kr/ed84ee795122447db8c315de4b963c10틀린 코드 (시간 초과) : http://boj.kr/fb273c695c8844afb5f3d72ff539970e안녕하세요 강사님 :)해당 문제에서 시간 초과가 계속 나서 이것저것 고쳐보다가 결국 정답을 받긴 했는데.. 정답 코드와 틀린 코드가 물론 다른 코드이지만, 맞고 틀리고에 어떤 영향을 준 것인지 이해가 잘 되지 않아서 질문드립니다. 두 코드의 차이점은 간단하게 tracing을 위한 코드인 while문에서의 차이입니다. 맞은 코드는 while문을 첫 번째 정답인 dp[n]의 최솟값만큼 반복합니다. int temp = n; int repeat = dp[n]; while(repeat--) { cout << temp << ' '; temp = prev_[temp]; } cout << 1 << '\n';틀린 코드는 while문(tracing)을 1이 나올 때까지 반복합니다. int temp = n; while(1) { cout << temp << ' '; temp = prev_[temp]; if(temp == 1) break; } cout << 1 << '\n';틀린 코드는 98~99%쯤 시간 초과가 나는데 혹시 이유가 있을까요?
-
미해결코딩테스트 [ ALL IN ONE ]
연결리스트 (Linked List) - 1 : 17분부터
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 수고 많으십니다. 연결리스트 (Linked List) - 1 : 17분부터 이해가 안가서 문의 남깁니다.append(2) → append(3)으로 갈 때1-1) new_node = Node(value) 에서 append(2),(3)의 위치값은 둘다 0x00000 로 지정되고1-2) 그 다음 명령어인 else로 오면 append(2)의 위치 값이 생기는 걸로 설명해주셨습니다.1-3) 그리고 그 다음에 append(4)가 실행되면 그냥 위에서 했던것 처럼 진행하면 append(3)방에는 위치값이 생기고 append(4)방은 0x00000으로 지정되는거 아닌가요?왜 while 문을 써줘야되는지 모르겠습니다.→ 혹시 class Node 로부터 명령어가 계속 이어져서 그런건가요? class Node에서 first.next = second / second.next = third로 지정해놨는데 third.next를 지정하지 않아서 둘다 0x0000으로 위치 값이 된건가요? 2. 18분 24초 while 문에서while(current.next): 명령어가current의 next node가 none 까지 반복하라는 거라고 말씀해주셨는데 while(current.next) 이 한 문장에 함축적으로 명령어가 담겨져 있는 건가요?왜 while 문이 저걸 의미하는지 모르겠네요ㅠ→ 혹시 class Node 로부터 명령어가 계속 이어져서 그런건가요? class Node에서 next 초기 값을 none으로 지정해줘서 current.next 가 none 값을 찾아라는 의미일까요?감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 뮤탈리스크 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님강의 잘듣고 있습니다. 3-E 뮤탈리스크 문제 관련해서 질문이 있는데요.풀이강의 듣기전에는 저런식으로 재귀함수를 생각했는데요.데미지를 계산하는 함수를 만들고 그 안에 데미지 9,3,1에 대해서 순열을 계산해서 나온 6개에 대한 재귀함수를 각각 작성해서 끊임없이 내부에서 돌다가, SCV 3개의 피가 모두 0이하가 되면 return 해서 빠져나오는걸 생각했습니다.뭐 보시다싶이...모든 케이스 다 틀리게 나오고 cnt도 1000이상씩 증가하는거보면 완전히 로직도 이상한것 같습니다만디버깅 돌려봐도 워낙 복잡해서 그런지... 어디서 잘못된거지 정확히 이해가 안가서요.혹시 로직이 어떤게 잘못된거지 봐주실수 있나요?아니면 아예 접근법 자체가 완전히 틀려서 안되는건지 궁금합니다.....#include <iostream> #include <vector> #include <algorithm> #include <queue> #include <climits> using namespace std; int cnt = 0; int ret = INT_MAX; int n,aa,bb,cc; void attack(int a, int b, int c) { cnt++; if (a <= 0 && b <= 0 && c <= 0) { ret = ret < cnt ? ret : cnt; //cout << "cnt : " << cnt << " a : " << a << " b : " << b << " c : " << c<<endl; cnt--; return; } attack(a - 9, b - 3, c - 1); attack(a - 9, b - 1, c - 3); attack(a - 3, b - 9, c - 1); attack(a - 3, b - 1, c - 9); attack(a - 1, b - 3, c - 9); attack(a - 1, b - 9, c - 3); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> aa >> bb >> cc; attack(aa, bb, cc); cout << ret << '\n'; }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이렇게 풀어보았는데 효율적이지 않을까요?
import java.util.Scanner; public class Main { private String solution(String str) { String result = ""; String[] words = str.split(" "); for (String word : words) { if (result.length() == word.length()) continue; // 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로. if (result.length() < word.length()) result = word; } return result; } public static void main(String[] args) { Main main = new Main(); Scanner in = new Scanner(System.in); String str = in.nextLine(); System.out.println(main.solution(str)); }선생님 코드와 많이 다른데 효율성 측면에서 좋지 못한 코드인지 궁금합니다!
-
미해결자바 코딩테스트 - it 대기업 유제
최대길이 바이토닉 수열 문제 질문드립니다.
저는 투포인터로 생각하고 각 경우의 수에 따라 바이토닉을 판별하는 걸로 했는데, 답이 다르긴한데 이렇게 구현하면 안되는 건가요??? public int solution(int[] nums){ int answer = 0; //다음 숫자가 지금 숫자보다 커여한다 //반복하면 안됨 //증가하다가 줄어든다 (정답 후보) //같은 수가 나오면 안된다. int cnt=0; boolean flag = false; //바이토닉 여부를 판별하기 위한 boolean변수 int ans = 0; int lt=0; for(int rt=1; rt<nums.length; rt++) { if(nums[lt]<nums[rt]) { //다음 숫자가 더 크면 바이토닉 가능 lt++; flag = true; //바이토닉이다 continue; } else if(nums[lt]==nums[rt]) { //다음 숫자랑 지금 숫자랑 같으면 바이토닉 아니다. lt++; if(flag) { //만약 이전까지 바이토닉이였다면 길이 구해주기 cnt = rt-lt+1; } flag = false; //바이토닉 판별을 초기화 continue; } else if(nums[lt]>nums[rt] && flag) { //다음 숫자가 지금보다 작고 바이토닉이면 지금까지의 길이를 구해줌 cnt = rt-lt+1; } else if(nums[lt]>nums[rt] && !flag) { //다음 숫자가 지금보다 작지만 바이토닉이 아니였다면 무시 lt++; continue; } ans = Math.max(ans, cnt); //최대 길이 갱신 } System.out.print(ans); return answer; }
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
if문 설정시 nx,ny가 범위내에 있을시 x,y값 이동하는걸로 가능할까요?
def solution(n, moves): move2direction={'U':[-1,0],'R':[0,1],'L':[0,-1],'D':[1,0]} R=C=n r,c=0,0 for move in moves: dr,dc=move2direction[move] nr=r+dr nc=c+dc if 0<=nr<R and 0<=nc<C: r=nr c=nc return [r,c]
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
저번 수업에 배운 딕셔너리를 이용한 방향설정은 어떨까요?
def solution(moves): move2direction={'U':[-1,0], 'R':[0,1], 'L':[0,-1], 'D':[1,0]} nr, nc = 0, 0 for move in moves: dr, dc = move2direction[move] nr += dr nc += dc return [nr, nc]
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
90번 심바문제 질문입니다.
안녕하세요 선생님의 코드를 보면서 이해가 안가는 부분이 있습니다. 영상에서 64~66번째 줄에서 ch[i][j]=0으로 초기화를 시키는데 그 이유가 뭔지 알 수 있을까요? 제 생각엔 심바가 이동을 한 map에서만 0을 적용해서 구하면 될 거 같은 생각이 들어서 질문드립니다.
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
if문
if 0<=nx<5 and 0<=ny<5: #이렇게도 가능할까요?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
변수명 x, y
차라리 행은 row의 r, 열은 column의 c로 변수명 사용은 어떨까요? x,y가 많이 헷갈립니다.