using namespace 아래로 답지꺼 복붙 하니까 제대로 되는데 제가 답지 따라서 타이핑 친 건 이건데 안 나오네요 아무리 봐도 어디가 잘못된 줄 모르겠어요 #include<iostream> #include<cstring> #include<queue> #include<tuple> using namespace std; int n, m, mx, visited[54][54]; const int dy[]={-1,0,1,0}; const int dx[]={0,1,0,-1}; char a[54][54]; void bfs(int y, int x){ memset(visited,0,sizeof(visited)); visited[y][x]=1; queue<pair<int,int>>q; q.push({y,x}); while(q.size()){ tie(y,x)=q.front();q.pop(); for(int i=0;i<4;i++){ int ny=y+dy[i]; int nx=x+dy[i]; if(ny<0||ny>=n||nx<0||nx>=m)continue; if(visited[ny][nx])continue; if(a[ny][nx]=='W')continue; visited[ny][nx]=visited[y][x]+1; q.push({ny,nx}); mx=max(mx, visited[ny][nx]); } } return; } int main(){ cin >> n >> m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a[i][j]=='L')bfs(i,j); } } cout << mx-1 << "\n"; }
SM내 warp가 24개가 이상일 경우에 overlab이 생기지 않아 효율적인 스케줄링이 가능하다는 것은 정확히 이해 했지만, Warp 갯수가 적어지면 근본적으로 작업시간 자체는 줄지 않을까? 그렇다면 빨리 끝나는게 스케줄링이 좋은거 아닐까? 라는 생각이 들었습니다. 다음은 제 생각을 담은 그림입니다. 다음과 같이 23개의 warp가 overhead가 걸릴 수는 있겠지만 일이 끝나는 시간은 짧지 않을까? 또 반대로 warp의 수가 작다는 것은 일 양이 많지 않다는 것이니 당연히 빨리 끝나는게 맞지 않을까? 라는 생각을 했습니다.
string 헤더파일을 include 해주지않아도 string 클래스와 멤버함수들까지 에러없이 컴파일되고 실행이 되는 이유를 모르겠습니다 ㅠㅠ 네임스페이스 때문인가 해서 4번줄 주석처리하고 std::string a3 = "hello";를 해도 마찬가지로 문제없이 컴파일이 되네요.. 요즘 컴파일러가 똑똑하다(?)라는말이 이런데서 나오는 걸까요??
안녕하세요 큰돌님. 인접행렬 강의 관련하여 질문드립니다. [문제] 정점 20개인 그래프로 인접행렬 표현 시 메모리 최소로 쓸때, 배열 어떻게 만들어야 하나요? 질문1(강의 59초) 배열을 표현할때bool a[10][20]으로 할수도 있다라고 하셨는데, 이 표현이 20개의 노드중 10개의 노드로만 단방향 경로로 그래프를 만든다는 의미일까요? 질문2(강의 1분25초) arr[20][20] 필요한데 이보다 큰값을 부여할수 있다라고 언급하셨는데 a[10000][10000], 노드 20개를 이용해서 a[10000][10000] 배열을 어떻게 만들수 있는지 궁금합니다.
안녕하십니까, 수강생입니다. 큰돌님! 알고리즘교안 교재에서 삼성전자 라이브러리는 iostream, stdio.h, string.h, algorithm 정도 외우면 된다고 했는데, VS를 사용하여 코디가 잘돌아가는 지 확인할 때 앞서 말씀드린 라이브러리정도만 외우면되나요? 채첨시스템에 bits/stdc++.h는 사용할 수 있다고 알고 있습니다. 항상 감사드립니다.
자바가 느려서인지, 아니면 제가 첨부터 접근을 잘못한건지 모르겠습니다. ㅠㅠ package lecture4; import java.util.*; public class Prob1062 { static List<Set<Character>> sets = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); if(k<5){ System.out.println(0); return; }else if (k==26){ System.out.println(n); return; } List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // 문자열 입력 받기 String str = sc.next(); list.add(str); Set<Character> set = new HashSet<>(); // 각 문자열의 문자들을 Set에 저장. for (char c : str.toCharArray()) { set.add(c); } sets.add(set); } List<Set<Character>> filtered = new ArrayList<>(); for (int i = 0; i < n; i++) { // K 보다 많은 알파벳으로 이루어진 경우 제외 if(sets.get(i).size()<=k){ filtered.add(sets.get(i)); } } List<Integer> masks = new ArrayList<>(); for (Set<Character> set : filtered) { // Set의 각 알파벳을 대응되는 비트마스크로 표현 masks.add(setToMask(set)); } int mask = 1; int max = 0; while (mask < (1<<26)-1){ // 모든 경우의 수 탐색 if(Integer.bitCount(mask)>k){ // 비트마스크의 1 개수가 k 보다 크면 다음 경우로 넘어가기 mask++; continue; } int count = 0; for (Integer m : masks) { // 문자열을 비트마스크로 표현한 것을 비교해서 읽을 수 있는건지 개수 샘 if((mask & m) == m){ count++; } } max = Math.max(max,count); // 최대값 저장 mask++; } System.out.println(max); } private static int setToMask(Set<Character> set){ int[] num = new int[26]; for (Character character : set) { num[25 - (character-'a')] = 1; } StringBuffer sb = new StringBuffer(); for (int i : num) { sb.append(i); } return Integer.parseInt(sb.toString(),2); } }
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
13분 22초에 나오는 플레이어 스탯 관련 질문입니다. 저 같은 경우는 ebp레지스터의 위치를 기준으로 값을 할당하는게 아닌 아래의 내용처럼 eax레지스터의 주소에 +4, +8한 값을 이용하여 변수에 값이 할당되는데요 제 컴퓨터는 왜 eax레지스터를 이용하였는지 궁금합니다. ret.hp = 100; 00CC245E mov eax,dword ptr [ret] 00CC2461 mov dword ptr [eax],64h ret.attack = 10; 00CC2467 mov eax,dword ptr [ret] 00CC246A mov dword ptr [eax+4],0Ah ret.defence = 2; 00CC2471 mov eax,dword ptr [ret] 00CC2474 mov dword ptr [eax+8],2
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
멤버변수 int hp; 하나만 지정 하고 a.hp=1; b.hp=2; 식으로 a,b 로 각각 대입했을때 메모리가 cccccccc 0000002 cccccccc cccccccc 0000001 cccccccc 식으로 메모리가 올라오는데 감싸고 있는 'cccccccc' 의미가 있는 값인가요?
큰돌님 안녕하세여! 저는 게임 클라이언트 프로그래머가 되기 위해서 C++ , C# 유니티 등을 공부중입니다. 그런데 CS관련지식도 필요할 거 같아서 큰돌님의 CS지식의 정석 편을 들어도 되는지가 궁금해서 질문 남깁니다. 실습이 자바나 자바스크립트 위주로 진행된다는데 저는 C++, C#만 공부했는데 들어도 댈까요?
안녕하세요, 선생님! 선생님 수업 들으면서 정말 즐겁게 공부하고 있는 이직 준비생(?) 입니다..! 다름이 아니라 9996번 테스트케이스는 통과하는데 어떤 반례에서 걸리는지 채점 중(13%..) 즈음에 "틀렸습니다" 라는 메세지가 뜹니다. 최대한 예시를 안보고 풀려고 하고 있는데, 어떤 부분을 잘못 이해했는지 감이 잡히질 않아 이렇게 질문 드립니다ㅠㅠ 혹시나 ab*ba 패턴일 때 aba 의 결과가 DA 로 출력 되어야 하나요..? 시간 되실 때 한 번 확인 부탁 드립니다 선생님ㅠㅠ https://www.acmicpc.net/source/58695737