본문 바로가기
728x90

coding/algorithm49

[programmers] Lv.2 거리두기 확인하기(c++) 이렇게 if를 많이 쓰고, 중첩이 많이되면 찝찝하다.... 더보기 #include #include #include using namespace std; vector solution(vector places) { vector answer; for(vector place: places){ int ans = 1; for(int i=0; i= 0 && place[i][j-2] == 'P')||(j-1 >= 0 && place[i][j-1] == 'P')) ans = 0; // left-up [i-1][j-1] if(!left_partition | !up_partition) if(i-1 >= 0 && j-1 >= 0 && place[i-1][j-1] == 'P') ans = 0; // left-down [i+1].. 2022. 4. 28.
[programmers] Lv.3 표 편집(c++) 교훈: 생각나는 아이디어가 있으면 그냥 하자.. boubly linked list를 만들면 되겠다 생각했는데.. 만들어져있는걸로 그냥 하자 싶어서 set으로 진행했으나 답은 맞는데 아무리 해도 효율성이 안돼서 그냥 doubly linked list를 만들기로 결정.. 별로 어려운것도 아닌데 더 쉽고 좋은 방법 찾겠다고 시간만 낭비했다.. 라는 일기 doubly linked list(양방향으로 연결된 리스트) https://jolly-note.tistory.com/32 linked list - 이중(doubly) 연결 리스트 양방향으로 연결돼있는 linked list이다. 현 노드에서 이전 노드와 앞의 노드로 갈 수 있다. + singly linked list는 각 노드가 다음 노드만 가리킨다. + cir.. 2022. 4. 27.
[programmers] Lv.3 추석 트래픽(c++) 다시 한번 풀기 더보기 #include using namespace std; pair time_difference(string s, int t){ long t_sec = 0; istringstream iss(s); string buff; int i = 2; while(getline(iss, buff, ':')){ buff.erase(remove(buff.begin(), buff.end(), '.'), buff.end()); t_sec += pow(60, i)*stoi(buff); if(i==1) t_sec *= 1000; i--; } return {t_sec - t + 1, t_sec}; } vector logs; int compute(long start, long end){ int cnt = 0, id.. 2022. 4. 25.
[programmers] Lv.2 오픈채팅방(c++) 흠.. 너무 빨리 푼거같다. 담엔 Level3를 도전해봐야겠다.(일기) 더보기 #include using namespace std; vector solution(vector record) { vector answer; map id_nickname; // id 별 닉네임 관리 queue enter_leave; // enter/leave, id가 순서대로 들어감 for(string r: record){ istringstream iss(r); string op, id, nickname; iss >> op >> id >> nickname; // spilt if(op == "Enter" || op == "Change") id_nickname[id] = nickname; if(op == "Enter" || op =.. 2022. 4. 18.
[programmers] Lv.2 문자열 압축(c++) 더보기 #include #include using namespace std; vector tokenizing(string s, int N){ vector tokens; for(int j=0; s.length()>=N; j+N){ tokens.push_back(s.substr(j, N)); s = s.substr(j+N); if (s.length() 2a2ba3c - 1번 반복된것은 표현하지 않음 - 처음 자른 단어의 길이만큼 잘라야함 - 맨 마지막에 자른것은 정해진 길이보다 작을 수 있음 (딱 떨어지지 않아도 됨) 제한사항 - 1 2022. 4. 15.
[programmers] Lv.1 숫자 문자열과 영단어(c++) regex를 알게됨 아래 코드는 regex_replace를 알기 전 코드이다. 역시나 for문을 한번만 돌기위해 애씀 더보기 #include using namespace std; int solution(string s) { vector nums = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; string answer; for(int i=0; i 2022. 3. 8.
[programmers] Lv.1 신규 아이디 추천(c++) 더보기 #include #include using namespace std; string solution(string new_id) { string answer = ""; for(int i=0; i= 16) // answer 길이가 16보다 크면 길이 15로 자름 answer = answer.substr(0, 15); if(answer.back() == '.') // .가 answer 마지막에 있으면 제거 answer.pop_back(); while(answer.length() 2022. 3. 1.
[programmers] Lv.1 로또의 최고 순위와 최저 순위(c++) 빠르게 완료 for문 하나로 해결해서 만족스러움 :) 더보기 #include using namespace std; vector solution(vector lottos, vector win_nums) { sort(lottos.begin(), lottos.end()); sort(win_nums.begin(), win_nums.end()); int idx = 0, cnt = 0, same = 0; for(int i=0; i win_nums[idx]) idx++; if(lottos[i] == win_nums[idx]) same++; } vector answer; answer.push_back(same == 0 && cnt == 0 ? 6 : 7-(same+cnt)); answer.push_back(same =.. 2022. 2. 28.
[programmers] Lv.1 신고 결과 받기(c++) 코딩 테스트 연습 시작 더보기 #include using namespace std; // string split vector split(string str){ istringstream iss(str); string buff; vector result; while(getline(iss, buff, ' ')){ result.push_back(buff); } return result; } vector solution(vector id_list, vector report, int k) { unordered_map id_map; for(int i=0; i a >> b; //split cnt[b].insert(a); } [접근2] 만들어놓은 map인 cnt를 돌면서 해당 유저가 신고받은 횟수가 k번이 넘는지 확인 .. 2022. 2. 25.
728x90