목록분류 전체보기 (16)
귤귤나무 일지
문제가 의미하는 것을 생각하는데 한 10분 정도 걸린 것 같다.매회마다 array에 있는 가장 작은 수보다 작거나 같은 값 x를 선택한 후, array의 모든 양수인 값에서 x를 빼라는 것은..작거나 같은 값을 선택하라고 하지만, 최소로 실행하려면 같은 값을 선택해야 한다.또한, 매회마다 array의 모든 양수에서 x를 빼는데, 이건 결국 매회마다 최소 값들을 제외하는 것과 같은 의미이다.왜냐하면 매회 최소값을 빼더라도, 그보다 큰 값을 0으로 만들 수는 없기 때문이다. 이걸 생각해낼 때 예제에서 주어진 array에 중간 값을 추가했을 때는 어떻게 될지, 더 큰 값을 추가했을 때는 어떻게 될지를 생각해봤다.[1, 5, 0, 3, 5] -> [0, 4, 0, 2, 4] -> [0, 2, 0, 0, 2] -..
처음 생각했던 풀이는 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..