반응형

C++ 5

2018 KAKAO BLIND RECRUITMENT (비밀지도)

문제를 보는 순간 비트연산이 떠올랐다. 내가 문제를 많이 안풀어봐서 그런가 카카오 문제가 뭔가 독특한거 같다. 비트연산은 해본 경험이 있지만 이를 문자열로 변환하거나 출력해본적이 없었다. 검색의 도움을 받아 "bitset" 이라는 헤더가 있다는 것을 알게 되었고 bitset(숫자) 형식으로 사용하고 to_string을 이용하여 문자열로 변환할 수 있었다. 풀이는 다음과 같다. #include #include #include using namespace std; vector solution(int n, vector map1, vector map2) { vector answer; vector result(n, 0); for(int i = 0; i < result.size(); i++) { result[i] ..

2021 카카오 채용연계형 인턴십 (거리두기 확인하기)

문제를 어디서 많이 봤다고 생각했는데 작년에 실제로 테스트 봤던 문제였다. 당시에는 Python으로 문제를 풀었었다. 당시 작성했던 코드가 있는데 지금 보면 어떻게 풀었는지 알수가 없다. (뭔가 알고리즘 없이 맨해튼 거리로만 푼거 같은데 도저히 이해 불가능) def solution(places): answer = [0,0,0,0,0] for place_num,place in enumerate(places): person_location = [] flag =True for i,row in enumerate(place): for j in range(len(row)): if row[j]=="P": person_location.append((i,j)) for i in range(len(person_locatio..

2021 카카오 채용연계형 인턴십 (숫자 문자열 영단어)

입력으로 영어와 숫자가 포함된 문자열이 들어오면 문자열을 원래 숫자로 치환하는 문제이다. 개발은 Java로 하는데 알고리즘은 C++로 푸는 것이 편해서 오랜만에 풀다보니 문법을 다 까먹었다. 처음에는 s.length() 만큼 반복하면서 알파벳을 누적하고 누적과 동시에 해당 문자열이 숫자로 치환 가능한지 체크하는 함수를 만들어 풀려고 시도 했다. 그냥 삽질했음.... std::string 의 메소드를 잘 알지 못해서 이런 이상한 짓을 하였다. 사실 Python에는 replace함수를 매우 간단히 쓸수 있어 C++은 외우지 않았다.... (std::string에 replace가 있다니... 심지어 to_string 도 내장... WOW) 풀이는 다음과 같다. #include #include using nam..

BOJ 11399번 ATM

문제를 읽어보면 OS 스케쥴링에서 SJF 알고리즘인것을 확인할 수 있다. 기존 1번 방식으로 모든 사람이 돈을 인출하는데 걸리는 wating time은 FIFO 스케쥴링에 의해 39 분을 기다려야 한다. 반면 SJF 는 가중치(P)가 가장 작은 순서 우선으로 처리한다. n=[2,5,1,4,3] p=[1,2,3,3,4] 일때 일을 끝내는데 걸리는 시간은 다음과 같다 2= 1 5= 1+2 1= 1+2+3 4= 1+2+3+3 5= 1+2+3+3+4 위의 결과를 다 더하는것이 답이므로 다음과 같은 식을 구할 수 있다. i=n result += i*p[n-i] #include #include #include using namespace std; int main() { ios_base::sync_with_stdio..

알고리즘/boj 2022.11.08

Roman to Integer

단순 문자열 파싱 문제이다. 무지성으로 그냥 if -else 때려 넣고 시도했다가 시간초과.... 너무 쉽게 생각한거 같다. 생각해낸 아이디어는 for문을 돌때마다 해당 symbol의 value를 넣고 그 symbol의 바로 앞 symbol이 I,X,C일 경우 x2를 해여 빼준다. 이렇게 해결한다면 O(n) 만에 값을 구할 수 있다. class Solution { public: int getValue(char symbol){ int value=0; switch (symbol){ case 'I': value =1; break; case 'V': value =5; break; case 'X': value =10; break; case 'L': value =50; break; case 'C': value =1..

반응형