목록Programming/Coding Problems (15)
귤귤나무 일지
처음 생각했던 풀이는 boxTypes[i] = [numberOfBoxes, numberOfUnitsPerBox]니까,numberOfUnitsPerBox 기준으로 내림차순으로 정렬하고, 맨 앞에서부터 truckSize 개수만큼 더해야겠다!였다. 중간에 테스트 케이스 1개에서 runtime Error가 났는데, boxTypes에서 주어진 모든 box들의 개수의 합이 truckSize보다 작을 수 있는 경우를 고려하지 못 했다.그래서 수정해서 완성한 풀이는 다음과 같다.class Solution {public: static bool comp(vector a, vector b) { if (a[1] > b[1]) { return true; } retu..
보고 딱 떠오른 생각은 big, medium, small이 차례로 1, 2, 3이니까, 또 해시맵 사용해서 그에 대응하는 값을 1씩 줄이는 걸로 해야겠다.class ParkingSystem {private: int b = 0; int m = 0; int s = 0;public: ParkingSystem(int big, int medium, int small) { b = big; m = medium; s = small; } bool addCar(int carType) { switch (carType) { case 1: if (b > 0) { ..
로마 숫자로 표시돼 있는 걸 integer로 바꾸는 것.unordered_map을 사용하여 해시맵으로 해당 문자에 대응되면 그 값만큼 더하는 것으로 생각했다.그런데 IV, IX와 같이 작은 숫자가 큰 숫자 앞에 오면 값이 4 또는 9가 되는 것이 있었다.그래서 처음에는, 숫자가 I, X, C일 때 뒤에 숫자까지 포함한 IV, IX, XL, XC, CD, CM을 또 unordered_map으로 만들어서 해당 값을 찾는 걸로 구현했다.class Solution {public: int romanToInt(string s) { unordered_map m; m['I'] = 1; m['V'] = 5; m['X'] = 10; m['L'] = 50;..
class Solution {public: bool isPalindrome(int x) { if (x revertedNumber) { revertedNumber = revertedNumber * 10 + x % 10; x /= 10; } if (x == revertedNumber || x == revertedNumber / 10) return true; return false; }};Palindrome Number: 숫자를 거꾸로 읽어도 똑같은 숫자처음에는 to_string을 사용하여 string으로 만든 후, 뒤집어서 둘이 같은지 검사.하지만 이렇게 하면 시간이 오래 걸림. Foll..
class Solution {public: vector twoSum(vector& nums, int target) { int size = nums.size(); vector answer; for (int i=0; i처음에는 단순하게 처음부터 끝까지 숫자 2개씩 골라서 더하는 걸로 구했다.하지만 이렇게 하면 시간이 너무 오래 걸림. O(n^2)답이 나올 때까지 가능한 모든 2개 조합을 scan하고 있음. 그래서 찾아봤더니, unordered map을 사용해서 그 차에 해당하는 값을 O(1)로 구할 수 있다.class Solution {public: vector twoSum(vector& nums, int target) { unordered_map..