inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

투포인터 22988번 문제에서 continue와 break이 들어가는 이유

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

N, X = map(int,input().split()) arr = sorted(list(map(int,input().split()))) s = 0 e = N-1 remain = 0 cnt = 0 while s <= e : # s와 e가 교차되면 멈춘다! if arr[e] == X: cnt += 1 e -= 1 continue if s == e : remain += 1 break # 짜투리를 하나 추가한다! if arr[e] + arr[s] >= X/2: cnt +=1 s += 1 e -= 1 else: s += 1 # 수가 커지겠죠! remain += 1 print(cnt + remain//3 ) 여기에서 while문 안에 첫 번째 if 다음에 continue가 들어가는 이유와 두 번째 if 문에서 break을 사용하는 이유를 모르겠습니다. 두 개 다 없어도 가능하다고 생각하는데 테스트 케이스의 경우 continue는 없어도 예제 출력을 출력했고, break은 없으면 예제출력과 결과가 다르네요!! continue와 break이 어떻게 쓰인 것인지 조금 자세히 설명해주실 수 있으실까요

  • python
  • 코딩-테스트
  • 알고리즘
녜힁 댓글 1 좋아요 1 조회수 355

완전탐색 1090번 시간초과

미해결

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

예제 문제는 잘 풀리는데 백준에 제출하니까 시간초과가 뜹니다 강의 자료랑 큰 차이는 없어 보이는데 어느 부분을 고쳐야 시간 안에 계산 가능할까요? #include <iostream> #include <cstdlib> using namespace std; int main(int argc, char **argv) { int n; int minX, minY, maxX, maxY; cin >> n; int arr[n][2]; for(int i=0; i<n; i++){ cin >> arr[i][0] >> arr[i][1]; } minX = arr[0][0]; maxX = arr[0][0]; minY = arr[0][1]; maxY = arr[0][1]; for(int i=1; i<n; i++){ if(arr[i][0]>maxX){ maxX = arr[i][0]; } else if(arr[i][0]<minX){ minX = arr[i][0]; } if(arr[i][1]>maxY){ maxY = arr[i][1]; } else if(arr[i][1]<minY){ minY = arr[i][1]; } } int arr_answer[n]; int arr_dis[n]; for(int i=minY; i<=maxY; i++){ for(int j=minX; j<= maxX; j++){ for(int l=0; l<n; l++){ int subY= 0, subX=0; subY = i-arr[l][1]; subX = j-arr[l][0]; arr_dis[l] = abs(subX) + abs(subY); } int sum = 0; for(int k=0; k<n; k++){ sum+=arr_dis[k]; if(i==minY && j ==minX){ arr_answer[k] =sum; } else if(sum < arr_answer[k]){ arr_answer[k] = sum; } } } } for(int i=0; i<n; i++){ cout << arr_answer[i] << " "; } return 0; }

  • python
  • 코딩-테스트
  • 알고리즘
yongyong213 댓글 2 좋아요 1 조회수 617

바닥 장식 (백준 1388) 문제 질문입니당

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

저는 맵2차원배열을 boolean으로 사용하고싶어 아래와 같이 코드를 작성해봤습니당... 예제입력1. 은 답이 잘나오는데 나머지는 왜 틀리게 나올까용... package DFS; import java.io.*; import java.util.StringTokenizer; import java.util.Vector; /* 바닥 장식 https://www.acmicpc.net/problem/1388 */ public class B1388 { final static int MAX =50+10; static boolean [][] map; static boolean [][] visited; static int M,N; static void dfs(int y, int x){ visited[y][x]=true; if (map[y][x]==true&& map[y][x+1]==true){ dfs(y, x + 1); } if(map[y][x]==false&&map[y+1][x]==false){ dfs(y+1,x ); } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); map = new boolean[MAX][MAX]; visited = new boolean[MAX][MAX]; //맵정보 반영 for (int i = 1; i <= N; i++) { String str = br.readLine(); for (int j = 1; j <= M; j++) { map[i][j] = (str.charAt(j - 1) == '-' ? true : false); } } //dfs int answer=0; for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if(map[i][j]&&visited[i][j]==false){ dfs(i,j); answer++; } } } bw.write(String.valueOf(answer)); bw.flush(); bw.close(); } }

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
락곤 댓글 1 좋아요 1 조회수 250

침투 (백준 13565) 문제중 질문입니당

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

아래 코드에서 왜 DFS를 수행할때 MAP[1] 이 왜 고정인지 잘모르겠습니다... //맵정보 저장 for (int i = 1; i <= N; i++) { String str = br.readLine(); for (int j = 1; j <= M; j++) { map[i][j] = (str.charAt(j - 1) == '0' ? true : false); } } //dfs for (int j = 1; j <= M; j++) { if (map[1][j]) { // 왜 map[1][j] 일까요 dfs(1, j); // 또한 dfs도왜 1,j 일가요 } }

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
락곤 댓글 1 좋아요 1 조회수 308

최적화(정수론) 질문

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

21분 22초에서 176에서 177까지의 수에서 2의 제곱수로 나누어지는 약수를 모두 찾아 더하는 문제인데요. 뜬금없게 느껴졌는데, 176은 16으로 나누어 떨어지고, 177은 1로 나누어 떨어지니 16+1 =17이 답이다 라고 하셨는데... 저는 이 전개가 전혀 이해가 되지 않습니다... 어떻게 16 + 1이 나오는지 알려주시면 감사하겠습니다....

  • python
  • 코딩-테스트
  • 알고리즘
김철세 댓글 1 좋아요 3 조회수 470

노션 교재가 있어야 수강 가능한가요?

해결됨

코딩테스트 [ ALL IN ONE ]

안녕하세요! 강의를 수강하려고 결제했는데 노션 교재를 바로 받아 볼 수 있는게 아니더라구요 ㅠㅠ 구글폼 제출했는데.. 노션 교재가 있어야 원활한 수강이 가능한 것인지요?

  • python
  • 코딩-테스트
  • 알고리즘
유미김 댓글 1 좋아요 1 조회수 320

노션 공유 부탁드리겠습니다

해결됨

코딩테스트 [ ALL IN ONE ]

인프런 아이디: sonaky47 노션 이메일주소: sonaky47@gmail.com

  • python
  • 코딩-테스트
  • 알고리즘
sonaky47 댓글 1 좋아요 1 조회수 271

12891_DNA비밀번호

미해결

Do it! 알고리즘 코딩테스트 with JAVA

package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class p12891_DNA비밀번호 { static int[] myArr ; static int[] checkArr ; static int checkSecret ; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System. in )); StringTokenizer st = new StringTokenizer(br.readLine()); int s = Integer. parseInt (st.nextToken()); int p = Integer. parseInt (st.nextToken()); int result = 0; checkArr = new int[4]; // 비밀번호 체크 배열 myArr = new int[4]; // 현재 상태 배열 char[] a = new char[s]; checkSecret = 0; // 현재 p개 중 몇개가 비밀번호 요건에 만족하는지 a = br.readLine().toCharArray(); st = new StringTokenizer(br.readLine()); for (int i = 0; i < 4; i++) { checkArr [i] = Integer. parseInt (st.nextToken()); if ( checkArr [i] == 0) { checkSecret ++; // i번째 값은 이미 완성됨. } } for (int i = 0; i < p; i++) { // 부분 문자열 처음 받을 때 세팅 Add (a[i]); // 현재 상태 배열에 담음 } if ( checkSecret == 4) { result++; } // 슬라이딩 윈도우 for (int i = p; i < s; i++) { int j = i - p; // j = 맨 왼쪽, i = 맨 오른쪽 Add (a[i]); // 오른쪽에 있는 값 추가 Remove (a[j]); if ( checkSecret == 4) { result++; } } System. out .println(result); br.close(); } private static void Remove(char c) { switch (c) { case 'A': if ( myArr [0] == checkArr [0]) // 같으면 이번에 빠짐으로써 충족이 안 되는 것이니까 checkSecret 하나 줄임 checkSecret --; myArr [0]--; break; case 'C': if ( myArr [1] == checkArr [1]) checkSecret --; myArr [1]--; break; case 'G': if ( myArr [2] == checkArr [2]) checkSecret --; myArr [2]--; break; case 'T': if ( myArr [3] == checkArr [3]) checkSecret --; myArr [3]--; break; } } private static void Add(char c) { switch (c) { case 'A': myArr [0]++; if ( myArr [0] == checkArr [0]) checkSecret ++; // 'A'가 더 많이 들어온다고 해서 checkSecret값을 올리면 되는 게 아니므로 딱 같을 때에만 증가시킴 break; case 'C': myArr [1]++; if ( myArr [1] == checkArr [1]) checkSecret ++; break; case 'G': myArr [2]++; if ( myArr [2] == checkArr [2]) checkSecret ++; break; case 'T': myArr [3]++; if ( myArr [3] == checkArr [3]) checkSecret ++; break; } } } 현재 백준에서 문제가 통과되지 않고 있는데 혹시 잘못된 부분이라도 있을까요?ㅠ

  • java
  • 코딩-테스트
  • 알고리즘
문수 댓글 3 좋아요 0 조회수 660

40분쯤 gcd 관련 이해가 안됩니다.

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

gcd(12,8) -> gcd(8,12-8)이면 gcd(a,b) -> gcd(b,a-b) 가 맞는게아닌가요?

  • python
  • 코딩-테스트
  • 알고리즘
ㅇㅇㅇ 댓글 2 좋아요 2 조회수 465

i==k일떄 i++안해도되지않나요

미해결

Do it! 알고리즘 코딩테스트 with C++

i==k인 경우는 a[i]에 1을 더하더라도 큰 값이 나올텐데 i를 오른쪾으로 옮겨버리면 사실상 a[k]보다 더 큰 값만 나오는거 아닌가요?

  • c++
  • 코딩-테스트
  • 알고리즘
박준형 댓글 1 좋아요 0 조회수 456

레드플랙트리의높이

미해결

그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)

닐노드기준으로 21을가려면 HEIGHT가 2아닌가요? 왜 4인가요? 가는 통로가 따로 있나요? Red-Black 트리 - 개념(제거) 10분에서 Red-Black 트리 - 개념(제거)에서 15노드를 제거하면 닐이 바깥쪽 조카노드가 아니라 형제노드가 되는거 아닌가요? 21 닐 30(형제노드) 25(안쪽조카노드)

  • 알고리즘
zzzzz 댓글 1 좋아요 1 조회수 307

Main class에 static으로 선언하는 이유

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

강의 영상마다 질문이 있으면 언제든 그리고 바로 질문 남겨주세요 ! 질문할 때 가장 정확하게 이해할 수 있습니다. 해당 영상과 관련된 질문들을 해주실 때 제가 가장 정확히 답변 드릴 수 있습니다! 취업 전반의 상담이나, "제 코드가 왜 틀렸는지 알려주세요"와 같이 광범위한 질문은, 질문자의 상황에 따라 답변이 달라질 수 있기 때문에, 정확한 답변을 드리기가 어렵습니다 :( 이런 분들을 위해서는 멘토링 항목으로 별도 제공하고 있으니, 다음 링크를 참고해주세요! 이 링크를 통해서는 본인의 코드가 왜 틀렸는지 모를 때 질문을 주셔도 좋고, 취업 전반(면접 준비, 자소서, CS 면접 등) 에 관련한 질문을 주시면 답변 드리겠습니다 :) "이 질문은 해도 되나?"라는 생각이 드신다면 우선 남겨주세요! 제가 답변 드리기 어려운 건 멘토링에 올려 달라고 재요청 드리겠습니다 :) 안녕하세요! 혹시 Main class에 static으로 변수를 선언하는 이유가 궁금합니다! 또한, 백준에서 public static void main 에 선언했을 때와 차이가 궁금합니다..!! 감사합니다

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
버럼 댓글 1 좋아요 1 조회수 278

python metaclasses vs java reflection

미해결

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

강의를 듣던도중, python metaclasses가, 자바의 reflection과 비슷하다는 느낌을 받았습니다. 질문 : 그렇다면, 메타클래스를 이용해서, 런타임에 동적으로 클래스의 정보를 조작하거나 프록시 객체를 만드는등의 일이 가능한건가요?

  • python
  • 알고리즘
  • reflection
aorri96 댓글 1 좋아요 0 조회수 378

안녕하세요 누적합 문제번호에 오타가 있는 것 같습니다

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요. 누적합 강의에서 첫 문제인 '수열'은 백준 2259번이 아닌 2559번으로 등재되어 있습니다!

  • python
  • 코딩-테스트
  • 알고리즘
녜힁 댓글 2 좋아요 1 조회수 219

안녕하세요 완전탐색 2503번 풀이 질문 드립니다

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

3일 째 스스로 숙제라고 말씀하신 부분에 대해서 코드 작성하면서 제출해보는데 계속 오답이 나와서 질문 드립니다. 구글에 풀이 검색하면 Permutation이나 DFS로만 풀이가 나와서 어떻게 코드를 작성해야 할까요?

  • python
  • 코딩-테스트
  • 알고리즘
녜힁 댓글 1 좋아요 1 조회수 634

dfs를 호출 할 때 매개변수..?

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

안녕하세요! 강의 넘 잘 듣고 있습니다. 하루만에 거의 다들었네요,,ㅋㅋ 질문이 있습니다 혹시 dfs를 호출할 때 이런 '-'나 '|' 같은게 나오면 매개변수로 '-' 나 '|' 를 추가해서 dfs함수에 넘겨도 되는건가요? 저는 이렇게 할 때가 많은데 이렇게 하지 않고 오히려 dfs 함수 안에서 해결해주는 게 더 간단한 것 같기도 해서요.. 보통은 어떻게 하시나요? 전 4방 탐색을 하면서 이렇게 풀었었네요,, 한 방향만 탐색하는 팁 배워갑니다 ㅎㅎ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] dr = {-1, 1, 0, 0}; static int[] dc = {0, 0, -1, 1}; static int N, M; static char[][] arr; static int ans; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); arr = new char[N+2][M+2]; for (int i = 1; i <= N; i++) { String str = br.readLine(); for (int j = 1; j <= M; j++) { arr[i][j] = str.charAt(j-1); } } for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { if (arr[i][j] == '|') { dfs(i, j, '|'); ans++; } else if (arr[i][j] == '-'){ dfs(i, j, '-'); ans++; } } } System.out.println(ans); } private static void dfs(int r, int c, char shape) { int start = 0; int end = 0; if (shape == '|') { start = 0; end = 1; } else if (shape == '-'){ start = 2; end = 3; } arr[r][c] = '1'; for (int d = start; d <= end; d++) { int nr = r + dr[d]; int nc = c + dc[d]; if(arr[nr][nc] == shape) { arr[nr][nc] = '1'; dfs(nr, nc, shape); } } } }

  • java
  • 코딩-테스트
  • 알고리즘
  • 매개변수
oilater 댓글 1 좋아요 2 조회수 267

two_sum 딕셔너리 문제 코드관련 질문이 있습니다.

해결됨

코딩테스트 [ ALL IN ONE ]

class Solution(object): def twoSum(self, nums=[3,3], target=6): ans = [] dict = {} for i,v in enumerate(nums): if target-v in dict: ans.append(prev) ans.append(i) return ans dict[v] = i prev = i 이렇게하면, for문 안에서 리스트를 append하는거니까 총 O(n) 하는거아닌가요? 왜 예시 테스트케이스는 통과를 했는데 리트코드에서 submit을 누르면 나머지 테스트케이스는 통과하지 못하는거죠 ㅜㅜ

  • python
  • 코딩-테스트
  • 알고리즘
Ambition 댓글 1 좋아요 1 조회수 425

정수론 백준 1407번 질문 있습니다.

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요. 정수론 2로 몇번 나눠질까(#1407) 부분을 수강 하면서 궁금한 점을 질문드립니다. 해당 문제를 접근할 때 팩토리얼로 푸시는 것을 볼 수있었습니다. 해당 문제 자체에는 팩토리얼에 대한 설명은 없었는데, 어떻게 팩토리얼을 떠올릴 수 있으셨는지 궁금합니다. 해당 문제와 비슷하게 출제가 되었을 때 접근 방법이 궁금합니다. #2247도 같은 카테고리로 넣어두셔서 같은 접근 방법인가 싶은데, 해당 문제도 접근법이 궁금합니다. (어떤 단어나 부분에서 이 문제는 이렇게 풀어야겠다고 느끼시는 건지 궁금합니다.)

  • python
  • 코딩-테스트
  • 알고리즘
YS 댓글 1 좋아요 1 조회수 553

완전탐색 1816번 암호 키 문제 질문

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요! 백준 1816번 암호 키 문제에 관한 질문이 있는데요 우선 제가 초급자라서 허접한 질문이어도 양해부탁드립니다. for-loop이 100만째 되는 시점에 "YES"를 print 하는건 이해가 되는데요. 제가 아래 두번째 코드에 적은 것처럼 어차피 100만에서 for-loop이 종료되니까 print("YES")를 해주면 된다고 생각했는데 백준에 두번째 코드를 제출해보니까 틀린 답이라고 나오더라구요. 혼자 고민을 해보았는데 결론이 나오질 않아서 질문드립니다. 강의에서 보여주신 것처럼 첫번째 코드에서 i == 100만이라는 조건을 붙여줘야 하는 이유가 무엇일까요?? 감사합니다. n = int(input()) for _ in range(n): tc = int(input()) for i in range(2, 1_000_001): if tc % i == 0: print("NO") break if i == 1_000_000: print("YES") #---------------------------------- n = int(input()) for _ in range(n): tc = int(input()) for i in range(2, 1_000_001): if tc % i == 0: print("NO") break print("YES")

  • python
  • 코딩-테스트
  • 알고리즘
noeliden1 댓글 1 좋아요 1 조회수 502

인기 태그

인프런 TOP Writers

주간 인기글