본문 바로가기

전체 글

(12)
[LeetCode] 13. Roman to Integer (Easy) 영어 문제에 익숙해지기 위해, LeetCode 문제를 풀어보기로 했습니다. Challenges for New Users의 첫번째 문제인 Roman to Integer로 시작하였습니다. 로마자로 표기된 숫자를 string 형태로 입력받고, 이를 integer 형태의 숫자로 변환하는 간단한 문제입니다. switch 문을 사용하여 각 문자에 맞는 수를 answer에 더했습니다. 이 때 4, 9, 40, 90, 400, 900은 다른 두 문자로 만들어지기 때문에 앞 문자로 사용될 수 있는 I, X, C case에서 if문을 추가하였습니다. class Solution { public: int romanToInt(string s) { int answer = 0; for(int i=0;i
[프로그래머스-코딩테스트 고득점Kit] 기능개발 Lv2. 스택 카테고리의 문제입니다. 처음 풀었을 때, 작업 진도와 진행 속도를 integer 형으로 사용하여 fail이 발생하였습니다. integer를 integer로 나눈 결과값은 소수점 아래가 버려지기 때문에, 나누어 떨어질 때와 나누어 떨어지지 않을 때가 working day가 다르게 나오기 때문입니다. 따라서 남은 작업 진도와 진행 속도를 double 형으로 변환하여 나눈 결과값을 올림하여 working day를 구했습니다. #include #include #include #include using namespace std; vector solution(vector progresses, vector speeds) { vector answer; int preWorkingDay = ceil((dou..
[프로그래머스-코딩테스트 고득점Kit] 전화번호 목록 Lv.2 문제로 해시 카테고리에 있는 문제입니다. 휴대폰 번호를 key로, 1을 value로 unordered_map에 넣은 후, 각 휴대폰 번호의 접두어가 될 수 있는 string을 key로 하여 value가 1인지 확인하였습니다. #include #include #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; unordered_map phones; for(auto a:phone_book) { phones.insert({a,1}); } for(auto phone : phone_book) { for(int i=1;i
[프로그래머스-코딩테스트 고득점Kit] 완주하지 못한 선수 Lv.1 문제로 해시 카테고리에 있지만, 해시를 사용해서 풀지는 않았습니다. 참가자 vector와 완주자 vector를 sorting한 후, 차례대로 비교하는 방식으로 풀었습니다. #include #include #include using namespace std; string solution(vector participant, vector completion) { sort(participant.begin(), participant.end()); sort(completion.begin(), completion.end()); for(int i=0;i