inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

비트마스킹 사용에 관한 질문입니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

4주차 이론을 듣고 4-a 를 풀어봤습니다. http://boj.kr/1505ce542738451d97357d5977350e46 문제를 딱 보자마자 그냥 완전탐색으로 풀어야겠다고 생각하고 비트마스킹 생각을 하지않고 그냥 문제를 풀게 됐고 그 후 강의를 보니 비트마스킹을 사용해서 풀이하신 걸 보고 어떻게 이 문제를 보고 비트마스킹을 사용해야겠다고 생각하신건지 비트마스킹의 장점이 무엇인지 궁금해서 질문남깁니다. 1.경우의 수를 탐색하는 문제에서 사용하는 것 같은데 나중에는 무조건 비트마스킹을 사용해야만 하는 문제도 있나요? 아니면 이 문제처럼 그냥 완전탐색으로 풀어도 대부분 풀리는 건지 궁금합니다! 2. 비트마스킹의 장점은 속도 인가요? 시간 초과가 타이트할 때 사용하는 건지 아니면 다른 장점이 있는 건지 궁금합니다. 이론강의를 듣고 나서도 잘 이해가 안가서 질문드립니다!

  • c++
  • 코딩-테스트
펭구인 댓글 1 좋아요 1 조회수 246

1-N 모듈러 공식 질문있습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/3508e81686454e2ea04b64d2c4a3ba94 풀이법과 조금 다르지만 같은 원리로 풀었습니다 그런데 http://boj.kr/9f02c3d4d7b14d9eb585cb7dabfc6d2a 이건 두번째로 생각해본 풀이인데 이 코드는 틀렸다고 나옵니다. 두 코드의 차이점은 매개변수 y (지수부분)가 홀수일 때 첫번째 코드는 go(y-1) , go(1) 을 해서 한쪽부분을 짝수로 만들어준 것이고 두번째 코드는 go(y/2) ,go(y/2) ,go(1) 로 2로 나눠주면서 홀수라서 남는 부분을 곱해주는 방식입니다. 모듈러 공식이 (a * b) % c = ((a%c) *(a%c))%c 라고 하면 (a*b*c)%c 도 같이 적용되어야 하는게 아닌가 싶어서 질문드렸습니다!

  • c++
  • 코딩-테스트
펭구인 댓글 1 좋아요 0 조회수 168

다섯번째 테스트 케이스 채점결과 exit_code_-1073741819

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

#include <stdio.h> int main() { //freopen("input.txt","rt",stdin); int n,abs,left,right,res=1; scanf("%d",&n); int a[n]={0,}; scanf("%d",&left); for(int i=1;i<n;i++){ scanf("%d", &right); abs=(right-left>0)?right-left:left-right; a[abs]=1; left=right; } for(int i=1;i<n;i++){ if(a[i]!=1) res=0; } if(res==1){ printf("YES\n"); } else{ printf("NO\n"); } return 0; } 강의 듣기 전 스스로 짠 코드입니다. 채점결과 마지막 케이스만 이렇게 출력되는데 다섯번째 파일만 따로 돌려봐도 에러없이 종료되어서 원인을 잘 모르겠습니다ㅠㅠ

  • c++
  • 코딩-테스트
댓글 2 좋아요 0 조회수 218

rsp값에 대해

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

강의 마지막 부분을 보면 add rsp, 16을 한뒤에 pop rbx pop rax 를 하셨는데요, 이과정에서 실질적으로 push 5, 2가 pop이 되지 않았는데도 정상적으로 rbx에 값이 이전에 push했던 값으로 돌아오는것을 확인 하였습니다. 그렇다면 현재 stack에 Top에 해당하는 주소값은 사실상 rsp라고 생각 되는데 맞는건지 궁금해서 질문 드립니다.

  • c++
비타 댓글 1 좋아요 0 조회수 242

2-L 이해가 안되는 부분이 있습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요. 큰돌님. 이 문제는 제가 직접 풀지 못해서 선생님 답안을 보고 익히고 있는 중 궁금한 게 생겨서 질문 남깁니다. for문을 나오면 있는 끝점을 계산하는 코드입니다. 마지막에 이긴 팀을 기준으로 끝점을 계산하는 게 아닌 득점을 많이 한 팀 기준으로 끝점을 계산하신 이유가 궁금합니다

  • c++
  • 코딩-테스트
깨비 댓글 1 좋아요 0 조회수 233

맞왜틀 질문드립니다!

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/7d1b078d34894888995766119fc55780 아래와 같은 사고 과정을 따라 문제를 풀었습니다. 먼저 동생이 0에서 출발하더라도 1000초면 500,000을 넘어간다는 것을 확인했습니다. 또한 500,000 크기를 가지는 int형 배열이 약 2MB 정도의 공간만을 차지하므로 동생의 위치에 따른 시간을 먼저 broPos 배열에 저장했습니다. ex. 동생이 5를 0초에 방문, 6을 1초에 방문, 8을 2초에 방문 -> broPos[5] = 0, broPos[6] = 1, broPos[8] = 2 이후 수빈이가 bfs를 통해 탐색하되 같은 시간에 동생을 만나는 경우(broPos[next] == visited[next] - 1) 리턴후 시간 출력 동생의 지나갈 위치를 짝수초만큼 먼저 지나가는 경우 리턴 후 시간 + 짝수초 출력 동생이 500,000을 넘는 시간이 지나면 리턴 후 -1 출력 해당 방법으로 문제를 풀이했는데 어느 부분이 틀린걸까요?

  • c++
  • 코딩-테스트
qnvr31p 댓글 1 좋아요 0 조회수 216

[6-J] 질문드립니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

#include <bits/stdc++.h> using namespace std; #define ll long long ll N, M; vector<ll> attractions; // mid 시간안에 놀이기구를 다 탈 수 있는지 확인하는 함수 bool CanRide(ll mid) { ll cnt = 0; for(int i=0; i<M; i++) { cnt += mid/attractions[i]; } return cnt >= N - M; } // 마지막 아이가 타게되는 놀이기구 index 출력 ll GetIdx(ll mid) { ll cnt = M; for(ll i=0; i<attractions.size(); i++) { cnt += (mid-1) / attractions[i]; } for(ll i=0; i<attractions.size(); i++) { if(mid % attractions[i] == 0) cnt++; if(cnt == N) { return i+1; } } return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; for(int i=0; i<M; i++) { ll tmp; cin >> tmp; attractions.push_back(tmp); } ll left = 1, right = 60000000009, mid; if(N < M) { cout << N; return 0; } while(left <= right) { mid = (left + right) / 2; if(CanRide(mid)) { right = mid - 1; } else { left = mid + 1; mid = left; } } cout << GetIdx(mid); return 0; } 안녕하세요, 문제가 풀리지 않아 선생님의 풀이를 보고 충실히 따라 구현하여 제출하였는데 78%쯤에서 계속 틀렸다고 나와 질문드립니다. 이분탐색 범위도 맞게 설정된거 같고, 자료형도 범위에 맞게 long long으로 잘 사용한거 같은데 어디가 틀렸는지 찾을 수 없어 질문드립니다.

  • c++
  • 코딩-테스트
eogmlrhtn 댓글 1 좋아요 0 조회수 156

3-P 질문 있습니다!

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/e5455ffb96284f2d983e2afeae83ec1c 선생님이랑 비슷하게 문제를 풀었습니다. 하지만 궁금한 부분이 있어서 질문드립니다. 선생님께선 flower부분에 이중 for문을 돌리실 때 i, j =0으로 하셨는데 제 코드의 go함수를 봐주시면 sy, sx를 사용했고 sx가 for문을 벗어나면 sx=1로 초기화해서 i++이 되어도 첫칸부터 탐색할 수 있도록 하였습니다. 이렇게 작성한 이유가 i,j를 0으로 설정해서 탐색을 하면 탐색을 했던 부분을 또 탐색을 해서 시간초과가 나오지 않을까 생각했기 때문입니다. 혹시 다른 문제가 나와도 현재 제가 올린 코드처럼 sy, sx를 사용해서 코드를 짜도 큰 문제가 없을지 궁금합니다.

  • c++
  • 코딩-테스트
jjune0427 댓글 1 좋아요 0 조회수 192

질문있습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님. 선생님 강의와 함께 학교랑 병행하면서 알고리즘 공부한지 한달 정도 됐네요. 시작과 비교했을때 bfs, 완전탐색 개념이 조금씩 쌓이고 문제를 혼자서 다 풀 수는 없지만 80퍼는 그래도 혼자 코드를 짤 수 있는 실력이 생긴 걸 보아 실력이 조금씩 느는것 같긴 하네요..! 1,2학년때 다른 공부를 준비한다고 현재 3학년되서 알고리즘을 첨하지만 열심히 하고 있는데 내년엔 4학년이라 늦은 것 같아서 불안해지네요,,

  • c++
  • 코딩-테스트
Eunwoo 댓글 1 좋아요 0 조회수 235

가위바위보 질문(부동소수점 예외 코어덤프됨)

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

이렇게 뜨면서 승률이 안나오는데 이문제가 나누기할때 0으로 나눠서 나오는 문제인걸로 아는데 처음에 바로 실행하면 현재승률 없음이나오고 다음 가위바위보를하면 토탈에 값이 0이어서 그런거같은데 이부분을 어떻게 해결하면 좋을까요??

  • c++
킴주니 댓글 1 좋아요 0 조회수 176

7-N 시간 복잡도 질문이 있습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

문제링크: https://www.acmicpc.net/problem/17136 이번 7주차 DP 하면서 자꾸 TLE 뜨다 보니깐 이게 완탐이나 백트래킹으로 가능한지 감이 잘 안잡혀요 ㅠㅠ 큰돌님은 이 문제 바로 백트래킹으로 접근해도 된다라는걸 어떻게 파악하신건가요? 예를 들어서 테스트케이스 7번 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 가 있고 큰돌님의 코드를 돌려보면 [1,1] 위치에서 만들어 질 수 있는 정사각형의 최대 사이즈는 2이므로 [1,1] 위치에서 2 크기의 정사각형의 색을 칠하면서 탐색하는데 [1,1]의 위치에서는 2의 크기로 색칠하고 시작하면 답이 안된다는걸 사람의 눈으로는 파악이 돼죠 왜냐하면 [1, 2]를 기준으로 크기 4의 정사각형을 그릴 수 있다는걸 알기 때문에요. 그럼에도 불구하고 큰돌님은 위 상황을 인지한 상태에서 백트래킹으로 시도를 해보신건가요? 아니면 이게 백트래킹으로 풀린다는걸 아시고 푸신건가요?

  • c++
  • 코딩-테스트
박희천 댓글 2 좋아요 0 조회수 169

우연히 이 강의를 보고 c++에 관심이 생겼습니다

해결됨

스스로 프로그래밍 하는 능력을 키우는 C++

유튜브 재생목록에 c++ 기초 문법 -> c++ 자료 구조 및 기초 알고리즘 -> c++로 유니티같은 엔진 만들기 이 순서로 배우면 되는건가요? 좋은 강의 감사합니다.

  • c++
dofamine 댓글 1 좋아요 1 조회수 468

3-J 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/63da4f35132841e68fcc5d77ff53fc60 말씀해주신 풀이법이랑 좀 다르게 풀었는데, 이렇게 하면 왜 오류가 발생하는지 알수있을까요?? 그리고 제 코드에서 org(입력된 원본 배열)를 별도로 만들어 최소visited처리하는데 사용했는데, 혹시 이거보다 좀 더 효율적으로 하는 방법 이 있다면 알려주시면 감사하겠습니다!!

  • c++
  • 코딩-테스트
황주훈 댓글 2 좋아요 0 조회수 263

3-P 자바 기저조건 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

선생님, 강의 잘 듣고 있습니다! 다름이 아니라 혹시 기저조건에 if (price >= answer) { return; } 해당 조건을 추가해주지 않으신 이유가 있을까요? 해당 조건 없이도 시간복잡도 관련해서 영향이 적기 때문일까요..? 감사합니다! 아래는 저의 답안입니다! public class Main { static int n, answer = Integer.MAX_VALUE; static int[][] arr; static boolean[][] visited; static Map<Point, Integer> map = new HashMap<>(); static int[] dy = {-1, 0, 1, 0}; static int[] dx = {0, 1, 0, -1}; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); n = Integer.parseInt(br.readLine()); arr = new int[n][n]; visited = new boolean[n][n]; for (int i = 0; i < n; i++) { String[] s = br.readLine().split(" "); for (int j = 0; j < n; j++) { int price = Integer.parseInt(s[j]); arr[i][j] = price; map.put(new Point(i, j), price); } } go(0, 0); System.out.println(answer); } private static void go(int count, int price) { if (count == 3) { answer = Math.min(price, answer); return; } for (int i = 1; i < n - 1; i++) { for (int j = 1; j < n - 1; j++) { Point point = new Point(i, j); if (check(point)) { go(count + 1, price + flower(point)); wither(point); } } } } private static void wither(Point point) { visited[point.x][point.y] = false; for (int i = 0; i < 4; i++) { int ny = point.x + dy[i]; int nx = point.y + dx[i]; visited[ny][nx] = false; } } private static int flower(Point point) { visited[point.x][point.y] = true; int temp = arr[point.x][point.y]; for (int i = 0; i < 4; i++) { int ny = point.x + dy[i]; int nx = point.y + dx[i]; visited[ny][nx] = true; temp += arr[ny][nx]; } return temp; } private static boolean check(Point point) { for (int i = 0; i < 4; i++) { int ny = point.x + dy[i]; int nx = point.y + dx[i]; if (ny < 0 || nx < 0 || ny >= n || nx >= n || visited[ny][nx]) { return false; } } return true; } } 감사합니다!!

  • 코딩테스트
  • java
  • c++
jwnnoh 댓글 1 좋아요 0 조회수 249

2 - B 문제 질문있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

해당문제를 푸는데 강사님과 같은 방법으로 풀어나가고 있습니다만, 계속 12% 대에서 실패가 뜹니다. 조건문이 문제인가 싶어 dfs함수에 들어가기 전 조건문 세개 중 두, 세번째를 강의 내용처럼 합쳐보기도 하고, 문제를 잘못읽었나 싶어 map의 범위를 50 50 에서 51 * 51로도 해보고 전역변수 선언에 문제가 있나 싶어 변경도 해봤지만 해결이 안되네요. <http://boj.kr/85c9f690f6c64294a29406a816169cc0>

  • c++
  • 코딩-테스트
재석 강 댓글 1 좋아요 0 조회수 189

삼각형이 아니라 점만 세개 찍힙니다

미해결

[게임 프로그래머 도약반] DirectX11 입문

수업 자료로 받은 솔루션에서도 삼각형이 안나오길래 자세히 보니까 점이 세개 찍혀있더군요 TriangleDemo 클래스의 Render 부분에 DC->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); 이렇게 따로 추가를 해주니 정상적으로 삼각형이 나옵니다 그래서 엔진에 IASetPrimitiveTopology 를 호출 하고있나 확인 해봤는데 없더군요 혹시 이번에 추가된 Effect11에서 이 기능을 대체 하는건가요? 그래픽카드는 AMD 입니다

  • c++
  • directx
kdh98k 댓글 2 좋아요 0 조회수 424

pOldPen = dc.SelectObject(); 관련 질문

해결됨

MFC Windows 프로그래밍 - 기본

안녕하세요 선생님 강의에서 옛날 윈도우(XP)에서는 pOldPen = dc.SelectObject()를 안해주면 문제가 생길수 있고, 요즘 윈도우즈에서는 괜찮을거라고 하셨는데요. 이부분에 대해서 조금 더 자세하게 알고 싶습니다. 테스트용으로 코드를 작성했습니다. void CPenBrushDemoView::OnPaint() { CPaintDC dc(this); // device context for painting CBrush NewBrush; //비트맵 클래스 객체를 선언하여 비트맵 리소스 로딩. CBitmap Bmp; Bmp.LoadBitmap(IDB_BITMAP1); //로딩된 비트맵 리소스로 패턴 브러시 생성. NewBrush.CreatePatternBrush(&Bmp); CBrush* pOldBrush = dc.SelectObject(&NewBrush); //클라이언트 뷰 클래스의 클라이언트 영역 크기를 알아내고 //그 크기에 해당하는 네모를 그림. CRect Rect; GetClientRect(&Rect); dc.Rectangle(&Rect); dc.SelectObject(pOldBrush); DWORD style[] = {6, 3}; LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(255, 0, 0); // 여기서부터... CPen* pOldPen; CPen FirstPen; { FirstPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 20, &lb, 2, style); pOldPen = dc.SelectObject(&FirstPen); dc.MoveTo(40, 40); dc.LineTo(240, 40); } CPen SecondPen; { SecondPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 40, &lb, 2, style); dc.SelectObject(&SecondPen); dc.MoveTo(40, 240); dc.LineTo(240, 240); } { CPen ThirdPen; ThirdPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 60, &lb, 2, style); dc.SelectObject(&ThirdPen); dc.MoveTo(40, 440); dc.LineTo(240, 440); } dc.MoveTo(40, 640); dc.LineTo(240, 640); dc.SelectObject(pOldPen); } 위 코드에서는 총 4개의 직선을 그리고 있습니다. 여기서, CPen ThirdPen은 스코프 안에서 소멸자가 불러질 때 DeleteObject()가 실행되면서 gdi는 없어집니다. 하지만 디바이스컨텍스트(dc)는 계속 해당 gdi를 가리키고 있습니다. 그런데 그 이후에 dc는 지워진 gdi의 방식대로 직선을 그리고 있습니다.(dc.MoveTo(40, 640); dc.LineTo(240, 640);) dc가 가리키고 있던 gdi가 지워졌는데도 불구하고 어떻게 기존의 방식대로 그릴수 있는지 이유를 모르겠습니다. 그리고 위의 코드에서, dc.MoveTo(40, 440); dc.LineTo(240, 440); 를 지우게 되면 ... { CPen ThirdPen; ThirdPen.CreatePen(PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT, 60, &lb, 2, style); dc.SelectObject(&ThirdPen); // dc.MoveTo(40, 440); // dc.LineTo(240, 440); } ThirdPen이 스코프를 벗어난 이후 마지막 직선은 ThirdPen의 방식이 아닌 SecondPen의 방식으로 그려지고 있습니다. 좀 전의 위에서 동작한 방식과 일관성이 맞지 않는것같아요. 질문글이 길어서 요약을 해보자면.. 2개의 소스코드가 사소한 차이가 있는데 왜 DC가 동작하는 방식이 다를까요? DC와 GDI에 대한 저의 생각에서 혹시 오류가 있을까요?

  • c++
  • mfc
  • gdi
  • sdi
  • vc++
  • win32api
Learn 댓글 1 좋아요 0 조회수 288

"조합"코드를 임의로 수정했는데 확인해 보고 싶습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

선생님이 작성해 주신 조합 코드에서 제가 보기 편하게 임의로 수정했는데 잘 한 건지 궁금합니다. 완전히 같은 코드인가요? (실행 결과는 같습니다.) 아니라면 어떻게 다른지 왜 선생님이 작성해 주신 코드를 사용해야 하는지 가 궁금합니다! http://boj.kr/2e6fe99f57874e4c8932b2f0817c9377 항상 좋은 강의 감사합니다.

  • c++
  • 코딩-테스트
정윤원 댓글 1 좋아요 1 조회수 251

for(char a:str) cnt[a]++가 어떻게 알파뱃의 개수를 출력하는건가요?

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요. cnt[a]가 어떻게 알파벳의 개수를 출력하는지 이해가 되지 않습니다. 근본적으로 이해가 되지 않아 좌표이동 개념은 제외하고 질문드립니다! for(char a:str) cnt[a]++; 에서 be가 입력되면 b,e가 각각 a로 들어와서 cnt[b]=98 cnt[e]=101 위와 같이 받는 것까지는 알겠는데 cnt[a]++면, 1개씩 증가한다는 연산자인데.. 그럼 99,102가 되는 거 아닌가요..? 어떻게 알파벳의 개수를 출력하는건지 모르겠습니다 감사합니다!

  • c++
  • 코딩-테스트
박수민 댓글 2 좋아요 0 조회수 298

별찍기 질문드려요

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

강의영상 8:40분쯤에 i + 1로 변경해서 쭉 출력이되었는데 이 부분이 이해가 잘 안됩니다 그 이유가 처음 초기값이 j = 0이고 i = 0인데 j변수 for문에서 j < i + 1을하면 0 < 0 + 1 즉 0 < 1이 되어서 한번실행되고 j++를 해주고 다시 처음 for문으로 와서 i++가 되어있는데 그럼 다시 j변수 for문에서 1 < 1 + 1이 될텐데 그럼 1 < 2인데 별 찍는 코드가 그럼 한번만 실행되는거 아닌가요? 2보다 작은 동안이니까 한번 실행되는거 같은데 왜 아닌지 궁금합니다

  • c++
킴주니 댓글 2 좋아요 0 조회수 242

인기 태그

인프런 TOP Writers

주간 인기글