[목차]310 [Python / 기본문법] True / False 연산 print(1 !=3) #True print(not(1!=3)) #False print((3>0) and (30)&(30) or (3>5))#True print((3>0)| (3>5))#True print(5>4>3) #True print(5>4>7)#False 기타/Python 문법 2022. 3. 27. [Python / 기본 문법] 산수 ( 연산 , 반올림, 올림, 내림) print(1+1) #2 print(3-2) #1 print(5*2) #10 print(6/4) #1.5 print(2**3) # 2^3 ==8 print(5%3) # 나머지 구하기 2 print(5//3) # 1 print(10//3) # 3 print(10>3) # True print(4 >=7)# False print(10 기타/Python 문법 2022. 3. 27. [프로그래머스 / Level_2] 소수 찾기 완전 탐색 문제이다. #접근방법 카드 번호로 만들 수 있는 모든 값들을 조합해보면서 소수를 찾는 문제이다. dfs를 처음 호출했을 때는 만들어진 문자열이 없으므로 level이 1 이상일 때만 현재 만들어진 문자열이 소수인지 체크한다. 문자열로 전달하였기 때문에 stoi 함수를 활용해서 int형으로 변환 후 prime_check 함수를 호출하여 해당 값이 소수인지 판별한다. 만약 그 값이 소수라면 set 자료구조를 이용해서 해당 값을 넣어준다. ( set은 중복 무시 ) 이후 방문처리 되지 않은 카드가 있다면 문자열 뒤에 붙여주면서 dfs를 호출한다. dfs 호출 후 돌아오고 나면 다른 case에서도 사용해야하기 때문에 방문 처리했던 값을 다시 false로 반환한다. #include #include #in.. 프로그래머스/Level_2 2022. 3. 26. [백준 1963번 / C++] 소수 경로 dfs를 활용해서 푼 완전탐색 문제이다 #접근방법 먼저 소수인지 아닌지 판별하기 위해서 에네토스테라스의 체 방식으로 체크를 해줬다. (소수가 아닌 것들은 모두 true로 설정하였다. ) 먼저 queue에다가 시작 숫자 4자리와 count 값을 넣어준다. 그리고 숫자 4자리 수에 각 자릿수 마다 0부터 9까지 넣어서 소수이면서 범위 내에 있고 방문하지 않았다면 dfs를 호출한다. 만약 세가지 조건에 하나라도 포함되어있다면 continue 를 해준다. 이후 찾고자 하는 숫자와 같다면 count값을 출력해주고 만약 찾고자 하는 값이 없다면 "Impossible"을 출력해주자. #include #include #include #include #include #include #include using namesp.. 백준/완전 탐색 2022. 3. 25. [백준 1991번 / C++] 트리 순회 dfs를 잘 활용해서 무엇을 언제 출력해야할지 풀면된다. #접근방법 이차원 배열을 생성해서 각 알파벳들의 왼쪽 자식과 오른쪽 자식의 아스키코드값을 저장한다. 1. preorder 먼저 'A' 값을 매개변수로 전달해서 해당 루트값이 '.' 라면 리턴하고 그렇지 않다면, 루트 노드를 먼저 출력하고 루트노드의 왼쪽 자식과 오른쪽 자식 순대로 dfs를 호출한다. 2. inorder 먼저 'A' 값을 매개변수로 전달해서 루트노드의 왼쪽 자식을 계속 호출해서 해당 루트값이 '.' 라면 리턴해준다. 그 후 루트노드값을 출력하고 오른쪽 자식을 계속 호출을 반복한다. 3. postorder 먼저 'A' 값을 매개변수로 전달해서 루트노드의 왼쪽 자식을 계속 호출해서 해당 루트값이 '.' 라면 리턴해준다. 오른쪽 자식을 계.. 백준/그래프 2022. 3. 24. [백준 15649번 / C++] N과 M (1) DFS를 활용해서 완전탐색으로 풀어보자. #접근방법 1. 먼저 n과 m을 입력 받은 후에 level 값을 파라미터 값으로 전달하면서 바로 dfs를 호출한다. 2. level이 m 이 되었을 때는 지금까지 push_back 해서 모은 result값을 출력한다. 3. 그렇지 않다면 1~n 만큼 반복문을 돌리면서 방문 처리되지 않았을 경우, 방문 처리 및 result값 추가하고 dfs를 호출 4. 호출해서 돌아온 후에는 방문처리를 false 하고 result 배열에 넣었던 값을 다시 빼준다. #include #include using namespace std; int n, m; bool visited[10]; vector result; void dfs(int level) { if (level == m) { f.. 백준/완전 탐색 2022. 3. 24. [백준 18870번 / C++] 좌표 압축 unordered_map 자료구조를 활용해서 풀었다. #접근방법 1. 처음 입력받은 v라는 벡터의 데이터값들을 re_v에 옮겨닮는다. 2. re_v를 오름차순으로 정렬한 후 첫 번째 원소부터 살펴본다. 3. 해당 원소를 key값으로 가지는 map의 값을 cnt로 저장한다. 4. cnt는 해당 원소의 시작번호다. 즉, 이전에 같은 key 값을 가지고 있다면 그 번호로 세팅해 주어야한다. 그래서 본인은 prev라는 변수를 사용하여 이전에 사용했던 값과 다른지 비교를 하고 다르다면 +1 을 한 번호로 세팅해준다. 5. 이후 v라는 벡터의 원소를 key로 가진 map 의 value값을 출력하면 된다. #include #include #include #include using namespace std; int m.. 백준/구현 2022. 3. 24. [백준 7569번 / C++] 토마토 [백준 6593번 / C++ ] 상범 빌딩 BFS 문제이다 . 코드가 상당히 길다. #접근 방법 상범이가 빌딩에 갇히고 말았다. 왜 갇혔는지 모르겠다. 평범한 BFS 문제보다 조금 까다로운 문제이다. 왜냐하면 평소에 풀던 문제는 상하좌우만 baebalja.tistory.com 위의 문제와 상당히 비슷한 BFS문제이다. #접근방법 토마토 문제는 상하좌우만 고려할 것이 아니라 윗층과 아랫층을 검사해야한다. 즉, queue에다가 y와 x 그리고 layer까지 고려한 데이터 값을 함께 넣어준다. 그리고 map이 가로와 세로를 넘어갔을 때만 체크해주는 것이 아니라 layer의 높이까지 고려해야한다. 익지 않은 tomato 개수를 미리 저장을 해주고 bfs를 호출해서 현재 익은 토마토에서 주변에 안익은 토마토가 있.. 백준/DFS BFS 2022. 3. 22. [백준 3079번 / C++] 입국심사 이분탐색 문제이다. 해당 문제는 프로그래머스 입국심사 문제와 거의 똑같다고 보면된다. (사실, 그때 너무 열 받았던적이..) #접근방법 이분탐색에 대한 알고리즘을 모른다면 이분탐색 개념을 익히고 오는 것을 추천한다. 먼저 양쪽 끝 값을 설정해야 하는데 low와 high라는 변수를 둔다. 해당 변수들은 각각 제일 적게 걸리는 시간과 제일 오래 걸리는 시간을 초기화한다. 즉, low에는 0을 두고 high 에는 max.time[i] * m 을 둔다. high 초기화 값이 왜 저렇게 되는지 모를 수도 있는데 이게 무슨 말이냐면, 심사대 중 제일 시간이 오래 걸리는 심사대에 m명의 사람이 다 줄을 설수 있다. 그래서 최악의 상황에서 나올 수 있는 값을 high 값에다가 세팅 해주는 것이다. 이후 절반을 쪼개가면.. 백준/이분탐색 2022. 3. 22. [운영체제 5편] 데드락이 무엇인가 안녕하세요~ 개발자 배씨입니다!! 저번 시간에 뮤텍스와 세마포어에 대해서 알아보았어요 이번 시간에는 "Deadlock(교착상태)"에 대해서 알아보려고 해요. 교착상태 그게 뭐지..? 생각하실 수 있어요. 저번시간에 예를 들었었죠?? 화가 "배씨" 와 화가 "이씨"가 있어요. 그리고 "배씨"와 "이씨"는 그림을 그릴려고 작업실(임계구역)에 들어가서 물감(공유자원), 붓(공유자원)을 각각 하나씩 집었어요. "배씨"는 물감을 들었고 "이씨"는 붓을 들고 서로 필요한 도구를 기다리고 있는거에요. "배씨"는 붓이 필요하니까 붓을 기다리고 있고, "이씨"는 물감이 필요하니까 물감을 기다리고 있는거죠. 즉, "둘 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다.. 남이 읽는 CS/운영체제 2022. 3. 22. 이전 1 ··· 12 13 14 15 16 17 18 ··· 31 다음 반응형