[목차]310 [백준 13904번 / C++] 과제 #접근방법 점수의 최댓값을 얻기 위해서는 당연히 과제 점수가 높은 것을 제일 먼저 할당 받아야한다. 그렇기 때문에 처음에 입력받을 때 마감일 d와 점수 w 를 정렬해줘야한다. 우선 제일 중요한 과제 점수가 높은 것부터 내림차순으로 정렬해주었다. 그리고 만약 과제 점수가 같을 경우네는 마감일이 짧은것부터 오름차순으로 정렬했다. (실행해본결과 상관없는 조건이다) 아무튼 과제 점수가 높은 것들부터 해서 cost라는 배열에 집어넣어준다. 예를 들어 , 마감일이 4이고 점수가 50이라면 인덱스 4를 가지고 있는 cost라는 배열에 50을 저장한다. 이후에 마감일 4이고 점수가 40이 들어왔을 경우 마감일 1~3 일을 차례대로 훑어보면서 빈자리에 넣어준다. 만약 빈자리가 없다면, 이전에 더 높은 점수를 가지는 과.. 백준/그리디 2022. 4. 5. [백준 12904번 / C++] A와 B 그리디 문제이다. #접근 방법 처음에 문제를 읽어봤을 때 이걸 어떻게 해야하지..? 생각이 들수도 있다. 나도 그랬다. 문자열 S에 언제 A를 추가해야할지, 또는 언제 B를 추가하고 뒤집어야하는지.. 한 3분정도 생각하다가 답이 안나와서 만들어야 할 문자열에서 A와 B를 빼면 되지 않을까? 라는 생각이 들었다. 한번쯤은 직관적으로 문제에 접근해도 좋지만 만약 안풀린다면 추가하는 것이 아니라 반대로 생각해서 빼보는 방식도 고려해봐야할 것이다. 즉, 문자열 S1에서 만들어야 할 문자열이 S2 라면, S2에서 A를 빼주고, 또는 B를 빼주고 문자열을 뒤집는다. 언제동안? S1과 S2의 길이가 같을때까지! 문자열의 길이가 같아졌을 때 같은 문자열이 맞는지 비교해서 출력하면 끝이다. #include #includ.. 백준/그리디 2022. 4. 5. [백준 1449번 / C++] 수리공 항승 백준의 그리디로 분류되어 있는 문제를 풀어보았다. #접근방법 해당 문제는 조금만 생각해도 쉽게 풀릴 수 있다고 생각한다. 로직은 다음과 같다. 해당 지점에서 좌우 0.5 간격을 줘야한다는 말이 거창하게 들릴 수 있지만 해석해보면 그냥 물이 새는 지점은 구멍이고 그 구멍을 막기 위해선 한 칸을 막아야한다는 뜻이다. 즉, 길이가 1인 테이프를 그냥 붙이라는 말인데 말을 저렇게 하는거다. 먼저 물이 새는 지점의 데이터를 받아서 오름차순으로 정렬을 한다. 그 후, 시작 지점에서 바로 소유하고 있는 테이프의 길이를 더하고 -1을 해준다면 그 값이 테이프의 마지막 위치다. 예를 들면, 만약 물이 새는 시작 지점이 3이고 소유하고 있는 테이프 길이가 5라면 3 4 5 6 7 이라는 장소를 다 막을 수 있는 것이다. .. 백준/그리디 2022. 4. 5. [운영체제 7편] 인터럽트가 무엇인가 안녕하세요~ 개발자 배씨입니다 :) ㅎㅎ 자! 오늘은 인터럽트가 무엇인지에 대해서 알아볼려고 해요~ 해당 주제를 어떻게 정리해야할 지 정말 까다로워서 며칠을 고민하고 수정했답니다. 또한, 이 주제에서는 조~~~~금 용어가 많이 나오니까 목도 푸시고~ 기지개도 한번 쫘악 피시고 정신 가다듬고 천천히 따라오세요! 들어갈게요~ 인터럽트가 무엇일까요??? 입터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 일시 중단하고, 발생된 상황을 우선 처리한 후 실행중이던 작업으로 복귀하여 계속 처리하는 것을 말해요! 말이 좀 길죠? ㅎㅎ 이해가 잘 되진 않을겁니다. 다만, CPU가 어떠한 프로세스를 수행중이다가 갑자기 인터럽트라는 신호가 발생되면 하던일을 중단하고 다른 무언가를 처.. 남이 읽는 CS/운영체제 2022. 4. 4. [운영체제 6편] 유저모드 커널모드 저번 시간에 "데드락"에 대해서 배워봤었죠?? 그리고 "IPC"에 대한 존재가 있다고 했지만 그전에 배워야할 것들이 있다고 했어요~ 흐름에 따라 포스팅을 하는 것이 자연스럽고 깔끔하다고 느끼지만, 글을 쓰다가 아직 포스팅하지 않은 내용의 용어를 써야할 때는 조금 막막하더라구요. 그래서 고민하다가 데드락이 끝난 직후 바로 정리를 하는게 나을거 같더라구요~ 그래서 저번시간에 언급했던 IPC를 배우기전에 한번 거쳐서 가야할 부분이 있습니다. 유저모드와 커널모드 ,시스템 콜, 인터럽트 정도? 알고 가시는게 흐름 상 좋을거 같다는 생각입니다! 자 그렇다면 오늘은 무엇을 배울거냐???! "유저모드" 그리고 "커널모드"에 대해서 배워볼려고 합니다. 그게 뭐야..? 하실수 있을거에요 ㅎㅎ 저도 그랬거든요. 일단 한줄~.. 남이 읽는 CS/운영체제 2022. 4. 3. [백준 4179번 / C++] 불! bfs 를 이용해서 풀면 되는 문제이다. #접근방법 이 문제는 생각보다 예외사항이 많았다. 이 점들을 고려하지 못한채로 접근해서 수정작업이 좀 필요했다. 그래서 문제를 풀기 전에 지문을 꼼꼼히 읽고 접근해야할 습관이 필요하다고 뼈저리 느꼈던 문제이다. 이 문제를 요약하자면 불이 상하좌우로 먼저 퍼지고 나서 지훈이가 불을 피해서 지도의 끝에 도착하면 빠져나갈 수 있다. 그냥 전형적인 BFS() 문제인데 예외사항이 무엇인지 한번 살펴보자. J는 입력에서 하나만 주어진다. 문제를 보면 위의 문장 한줄이 나와있다. 여기서 유추를 했어야만 했다. 즉, "J는 입력에서 하나만 주어질 수 있다" 라는 말은 F는 입력에서 하나일 수도 있고 없을 수도 있고 두개 이상일 수도 있다는 뜻이다. 나는 처음 접근할 때 아무생각.. 백준/DFS BFS 2022. 4. 2. [백준 19637번 / C++] IF문 좀 대신 써줘 이분탐색을 이용한 문제이다~ #접근방법 이분탐색을 떠올려야 하는 단골 조건은 조건 범위가 10억을 넘길때이다. 뭐 아닌 문제도 있긴하겠지만 이분탐색을 이용해서 풀어야하는 문제는 대부분 10억 정도 되는 값을 조건으로 주어지기 때문에 해당 조건을 만났을 때 이분탐색을 의심해봐야한다. 이번 문제도 마찬가지다. 아래 조건을 보고 이분탐색을 고려해봐야한다. 칭호의 개수 N (1 ≤ N ≤ 10^5)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 10^5)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 10^5) 칭호의 개수가 100000 (10만) 이다. 그리고 캐릭터들의 개수 또한 100000 (10만) 이다. 그럼 여기서 생각을 해야할 것이 10만개의 캐릭터가 모두 상한값을 가지고 있다고.. 백준/이분탐색 2022. 4. 2. [백준 13458번 / C++] 시험 감독 해당 문제는 브론즈 문제이지만, 두가지의 예외사항이 있기 때문에 포스팅한다. #접근 방법 로직은 단순하다. 총 감독관은 각 시험장에 한명씩 투입돼야 하기 때문에 각 시험장에 수용하는 인원에다가 총 감독관이 감시할 수 있는 인원을 빼주고 시작한다. 그리고 부감독관이 감시할 수 있는 인원을 나누어주면 부감독관의 인원이 나온다. 그리고 나누었을 때 나머지가 1 이상이라면 한 명의 부감독관이 추가돼야한다. 여기서 예외사항이 있다. 총감독관이 모든 시험장에 투입됐는데 총감독관 혼자서 모든 인원을 감시할 수 있다면 부감독관을 고용할 필요가 없다는 뜻이다. 그렇기 때문에 각 시험장에서 수용하는 인원에서 총감독관이 감시할 수 있는 인원을 뺐을 때 해당 인원수가 0 이하로 떨어진다면 부감독관의 투입을 고려하지말자. 두번.. 백준/그리디 2022. 3. 31. [백준 12845번 / C++] 모두의 마블 그리디를 활용해서 풀면 되는 문제이다. #접근방법 그리디의 공통은 어떻게 하면 최적의 값을 구할 수 있는지 알아채야한다. 해당 문제 같은경우에는 문제를 잘 이해해서 의도를 파악해야한다. level 값이 만약 , 10 40 50 20 70 20 10 이런식으로 주어진다면, 어떻게 합을 하면 최댓값을 찾을 수 있을까 고민해야한다. 위의 예제에서 가장 큰 레벨의 값은 70이다. 그렇다면 70에다가 주변에 있는 레벨 값을 다 더해서 생성되는 것이 최대이지않을까? 라는 생각을 하는 순간, 바로 풀 수 있다. 즉, 배열에서 가장 큰 레벨을 가진 값과 인덱스 번호를 저장을 한 다음에 그 값을 기준으로 해서 다른 레벨의 값들을 더해서 만들어진 값들이 최댓값이 된다. #include #include #include us.. 백준/그리디 2022. 3. 31. [Level_2 / C++ / Python / 카카오] 오픈채팅방 공백으로 문자열 자르기 문자열이 공백이 주어진 상태로 주어진다면 공백을 기준으로 문자열을 자를 수 있다. 예) string s = "abc def gh" ; 해당 문자열을 "abc" , "def" , "gh" 로 자르는 거다. 해당 문법을 알아보자. #include #inclu.. baebalja.tistory.com 1. stringstream 을 활용해서 띄워쓰기에 따른 값들을 해당 변수에 저장한다. 2. unordered_map 을 활용해 uid에 따른 name을 저장한다. (change 명령이 들어와도 덮어씌우면 된다.) 3. map에서 uid에 해당하는 value값을 출력하면 된다. #include #include #include #include #include using namespace st.. 프로그래머스/Level_2 2022. 3. 31. 이전 1 ··· 10 11 12 13 14 15 16 ··· 31 다음 반응형