반응형

테슬라 3배 레버리지 차이점 이 궁금한 이유는 어떤 걸 살지 결정하기 위함이겠지요?!

 

하나씩 알아가보자면

 

1. 삼슬라란?

테슬라의 3배 레버리지 aka.삼슬라

즉, 테슬라의 주식이 5%오르면 -> 3배 레버리지 상품은 15%가 오르는 야수의 상품으로 (-의 경우에도 3배...)
영국에서 상장 되어있는 ETF이고 정확히는 ETP

대표적인 상품은 3LTS 와 TSL3입니다.

2. 차이점

테슬라를 3배로 추종하는 상품이 비슷할텐데, 뭘 사야할까 고민하다 보니 차이점이 궁금해졌는데요

차이점 : 1주당 가격, 회사, 수수료, 거래량

이런것들이 있는데, 해당 상품을 사려는 입장에서 고려해야 할 대상으로 생각해보면 가장 주요한건

수수료와 거래량이 중요할 것 같네요!

수수료 (3LTS vs TSL3)

수수료는 2개 모두 꽤 비싼 편이에요

순서대로 각각 5.94%와 3.78% (1년 수수료 기준, 3LTS vs TSL3)

아무래도 오래 가져갈 상품은 아니라, 크게 중요하지 않을수도 있지만

사고 팔때 드는 수수료가 차이가 있어요.

TSL3 승

거래량 (3LTS vs TSL3)

평균거래량 기준 순서대로 - 38만 vs 2500만 (3LTS vs TSL3)

거래량은 압도적이네요

거래 금액으로 따져도, 3LTS가 10배 비싼데 비해, 거래량이 100배정도 많으니, 10배정도 많을테구요.

거래량이 중요한 이유는 다들 아실테지만, 특히 거래량이 많아야 매도가 수월하고, 안정적이라고 판단할 수 있겠지요

이것도 TSL3 승

 

 

3. 결론

그래서 전 TSL3 로 샀습니다!

 

 

테슬라 3배 레버리지(aka. 삼슬라)에 대해 조금 더 알고 싶다면 아래에서 확인하세요!

 

 

삼슬라 : 테슬라 3배 레버리지 (TSL3)

엊그제가 천이백슬라고 어제가 천슬라같은데 팔백슬라라니... 머스크 형이 세금 낸다고 테슬라 팔고(최대 주주 리스크), 테이퍼링+금리 때문에 조정 받는 장이라고는 하지만! 포트폴리오의 가장

fire-programmer.tistory.com

 

반응형
반응형

지난달 신시계 그룹의 신세계아이앤씨에서 개발/운영 업무를 뽑는 공고가 있어서 지원했고,
경력기술서와 경험이 마음에 드셨는지 서류전형에 통과했고, 코딩테스트를 보았습니다.


채용 절차는 서류전형 - 코딩테스트 -1차면접 - 2차면접 순으로 진행되었으며, 코딩테스트 후 3일후에 합격통보와 면접 제의를 받았습니다. 다른 분들은 2~3주까지도 걸린다고 했는데, 이번엔 결과가 빨리 나온 편인것 같습니다.

서류 전형

다른 대기업들과 비슷한 채용 사이트(career)를 사용하며, 구성도 거의 비슷해서 특별한 건 없었습니다.
기본정보 / 학력,자격증 / 경력 / 경력기술서 등등 작성하며, 퇴직 사유가 그나마 생각하기에 오래 걸리는 문항이었습니다

마지막 페이지는 자기소개서로 크게 3가지 질문이었습니다. 지원동기, 차별화된 능력과 경험, 자유양식(어필) 이렇게 구성되어 있었던것 같아요

코딩테스트

코딩테스트는 정해진 시간에 접속해서 풀었던것 같아요
사이트 : TestDome
특징 : 모든 지문이 영어
구성 : 10문제 (SQL 7문제 / Java 3문제)
방식 : 1문제당 제한시간내에 풀어서 제출하며, 한번 넘어가면 돌아올 수 없음
난이도 : 쉬움 (SQL도 경력에서 DB를 다뤘다면, 시간이 넉넉하고, JAVA 문제는 프로그래머스 1~1.5?)
특징 : 시간과의 싸움 (시간이 빠듯하다는 평이 많음)
특징2 : JAVA문제는 DFS, DP, 그리디 이런 알고리즘이 아니라 객체지향 관점에서 JAVA를 활용하는 방식에 대한 문제

후기

10문제중 9문제 풀었고, 1문제는 특정 케이스에 실패했는데. 운이 좋게 합격했네요
테스트 3일 후에 합격통보와 면접 일정에 관련된 안내를 받았습니다.
참고로 1차면접은 화상 면접이라고 하네요

반응형
반응형

사이트 (FRED)

 

Federal Reserve Economic Data | FRED | St. Louis Fed

Welcome to FRED, your trusted source for economic data since 1991. Download, graph, and track 818,000 US and international time series from 110 sources. Welcome to FRED, your trusted source for economic data since 1991. Download, graph, and track 818,000 U

fred.stlouisfed.org


방법

1. 원하는 종목 검색 & 선택

2. 비교 대상 추가
: edit graph 클릭후 add line에서 추가할 대상 검색 및 선택

3. 포맷 지정
format 선택 후 y축을 right로 변경

4. 그래프 조회
원하는 기간 지정 가능(드래그)

5. 데이터/그래프 다운로드
데이터는 엑셀
그래프는 pdf나 image 등으로 다운

6. 데이터 확인하기

반응형
반응형

최근 현대 오토에버의 개발/운영 업무를 뽑는 공고가 있어서 지원했고, 서류 접수후에 인적성검사와 코딩테스트를 보았습니다.

 

채용 절차는 서류전형 - 인적성검사 & 코딩테스트 -1차면접 - 2차면접 순으로 진행됩니다.

반응형

서류 전형

다른 대기업들과 비슷한 채용 사이트(career)를 사용하며, 구성도 거의 비슷해서 특별한 건 없었습니다.

기본정보 / 학력,자격증 / 경력 / 경력기술서 등등 작성하며, 퇴직 사유가 그나마 생각하기에 오래 걸리는 문항이었습니다

 

마지막 페이지는 자기소개서로 크게 3가지 질문이었습니다. 지원동기, 희망업무를 강점을 근거로 기술, 역량기술서 이렇게 구성되어 있었던것 같아요

인적성검사(HMAT)

서류 전형을 통과하면, 인사팀에서 메일로 인적성검사를 보는 링크와 시험 가능한 기한을 알려줍니다.

인적성검사를 HMAT이라고 부르는것 같아요

구성 : 336문제에 60분정도

특징 : lpsative(=1 set에 3질문이 있고, 각 질문당 점수를 메기며, 그 중에 가장 멀고/가까운 답을 구하는 형식)

현대는 hmat의 기준이 높은 편으로 50%까지도 해당 검사로 필터링한다는 얘기가 있는 만큼 까다로운 편인것 같아요.

또한, 결과를 바탕으로 면접에서 질문이 들어오기도 한다고 합니다.

그렇기 때문에 답을 솔직하고 일관성있게 풀어야합니다.

(거짓말을 걸러내기 위한 장치들이 많이 있다고 해요)

코딩테스트(softeer)

코딩테스트는 정해진 기한내에 아무때나 접속해서 풀었어요

사이트 : softeer (현대차 그룹의 개발 직군을 위한 플랫폼 : https://softeer.ai/)

특징 : PC 화면 녹화 / PC 웹캠 녹화 / 모바일 녹화 / 복붙 불가 / 외부 IDE 사용불가 / 검색 불가 / java docs는 참고 가능

구성 : 3문제 (Java 3문제) 

방식 : 주어진 시간내에 모두 풀고, 가장 마지막에 제출한 답으로 제출되며, 시간 내에 계속 넘어올 수 있음

난이도 : 중상? 

설명 : softeer로 갈아타면서, 어려워졌다는 후기가 많은데, 역시 듣던거보다 어려워짐. 특정 알고리즘을 사용한것 보다도, 구현에 가까운 문제이고, softeer기준으로 레벨 2,3,4 1문제정도씩이 아닐까...싶음

특히나 softeer에 적응하지 못해서 환경에 적응하는데 30분정도 걸려서 시간이 많이 부족하고, 소스를 리팩토링하는것도 복붙이 안 되서 너무 까다롭고, 제약 사항이 많아서 힘든 기억.

부디 여러분은 여러번 풀고 적응한 상태에서 시험을 보시기를..!

팀바팀이지만, 커트라인으로 삼지 않고, 면접과 합산해서 보는 경우도 있다고해요

반응형
반응형

이슈

Python에서 loop(for)문으로 돌면서 특정 요소를 삭제시, 모든 요소를 체크하지 못하는 이슈

원인

Loop를 돌다가 삭제가 되면 다음 인덱스가 건너 띄워진다
(Ex. 위의 예제) [a,b,c,d]에서 Index=0인 a를 지우고, 다음 index인 1로 진행하면, [b,c,d]의 [1]인 c를 조회 => b를 skip!

 

해결

For문을 돌때  for l1 in list1[:]: 처럼 뒤에 [:]를 붙이면 복사면으로 루프를 돌리기 때문에 원하는 결과가 출력

(ex. for l1 in list1[:] :)

 


    list1 = ['a','b','c','d']
    list2 = ['a','b','e','f']
    for l1 in list1[:]:
        logging.info('비교대상 : %s', l1)
        if(l1 in list2):
            list1.remove(l1)
            list2.remove(l1)
    logging.info('비교 끝!  ')
    logging.info(list1)
    logging.info(list2)​

비교대상 : a

비교대상 : c

비교대상 : d

비교 ! 

['b', 'c', 'd']

['b', 'e', 'f']

 


   list1 = ['a','b','c','d']
    list2 = ['a','b','e','f']
    for l1 in list1:
        logging.info('비교대상 : %s', l1)
        if(l1 in list2):
            list1.remove(l1)
            list2.remove(l1)
    logging.info('비교 끝!  ')
    logging.info(list1)
    logging.info(list2)

비교대상 : a

비교대상 : b

비교대상 : c

비교대상 : d

비교 ! 

['c', 'd']

['e', 'f']

 

반응형
반응형

지난달 SK그룹/계열사에서 개발/운영 업무를 뽑는 공고가 있어서 지원했고,

여기는 서류전형+코딩테스트를 본 후에 종합적으로 판단해서 면접 여부를 확인하는 방식입니다.

채용 절차는 서류전형/코딩테스트 -1차면접 - 2차면접 순으로 진행되었으며, 1주일 이내에 결과가 나왔으며, 결과는 불합격입니다ㅠ

 

서류 전형

다른 대기업들과 비슷한 채용 사이트(career)를 사용하며, 구성도 거의 비슷해서 특별한 건 없었습니다.

기본정보 / 학력,자격증 / 경력 / 경력기술서 등등 작성하며, 퇴직 사유가 그나마 생각하기에 오래 걸리는 문항이었습니다

다른 SK 계열사와 중복해서 넣을 수 있지만, 한 계열사에서는 1군데만 지원 가능해요.

(여긴지, 다른 계열사인지 헷갈리는데) 자소서 항목은 따로 없었던것 같아요. 경력기술서 위주

반응형

코딩테스트

코딩테스트는 정해진 시간에 접속해서 풀었던것 같아요

사이트 : Codility

특징 : 모든 지문이 영어

구성 : 3문제 (SQL 1문제 / Java 2문제) 

방식 : 1문제당 제한시간내에 풀어서 제출하며, 한번 넘어가면 돌아올 수 없음

난이도 : 쉬운 편 (프로그래머스 기준 : 1정도)

특징 : 시간과의 싸움 / 특정 알고리즘을 사용하는 난이도 아님

 

 

후기 

3문제 모두 풀었지만, 종합적으로 판단하기 때문에 서류에서 탈락했을 가능성도 있지만, 어쨋든 탈락이지만

코테 난이도만 보면 어렵다고 할 순 없을것 같아요

 

 

반응형
반응형

문제 설명

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이 (java)

class Solution {
    public int[] solution(int brown, int yellow) {
//        수학적 풀이 필요 (1.for문 사용 2.근의공식) => 1로 풀었지만, 2가 성능이 좋음
//        yellow*brown = 가로*세로
//        yellow = (가로-2)*(세로-2)
        int[] answer = new int[2];
        for (int tempWidth = yellow+2; tempWidth > 0; tempWidth--) {
            int tempHeight = (brown+yellow)/tempWidth;
            if((tempWidth-2) * (tempHeight-2) == yellow){
                answer[0]=tempWidth;
                answer[1]=tempHeight;
                break;
            }
        }
        return answer;
    }
}

풀이 방법

  • 수학적 풀이 필요 (1.for문 사용 2.근의공식) => 1로 풀었지만, 2가 성능이 좋음
    • yellow*brown = 가로*세로
    • yellow = (가로-2)*(세로-2)

다른사람의 풀이 (java)

Good Idea : 근의 공식을 구현해 계산 -> 그렇다면, for문을 돌리지않고, 계산식만 한번 구하면 되기 때문에 성능이 아주 좋음 (단 가독성은 좀 떨어질수도..)

느낀점

코테에서는 종종 수학적 접근법이 중요한 경우가 있다.

그렇지 않으면, 모든 경우를 뒤져보면 된다

반응형
반응형

문제 설명

명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다.

아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.

명함 번호 가로 길이 세로 길이
1 60 50
2 30 70
3 60 30
4 80 40
가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다.

모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이 (java)

class Solution {
    public int solution(int[][] sizes) {
        int max = 0;
        int min = 0;
        for (int[] size : sizes) {
            int paramMax = Math.max(size[0], size[1]);
            int paramMin = Math.min(size[0], size[1]);

            if (paramMax > max) {
                max = paramMax;
            }

            if (paramMin > min) {
                min = paramMin;
            }
        }
        return max * min;
    }
}

풀이 방법

  • 모든 지갑마다 가로>세로 되도록 "sizes"를 정렬
  • 게중에 가장 큰 가로/세로 길이를 구함

 

느낀점

모든 경우의 수를 확인해야하는 완전 탐색의 풀이법은

역시 반복문과 조건문으로 빠짐없이 모두 체크하는것!

반응형
반응형

문제 설명

하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다.
각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요. (단, 소수점 이하의 수는 버립니다)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이 (java) = 다른 사람의 풀이

import java.util.Arrays;
import java.util.PriorityQueue;

class Solution {
    public int solution(int[][] jobs) {
        // 총 시간은 대기시간(가변)+실행시간(불변)이므로, 대기시간이 짧을수록 짧아진다
        // 대기시간(=시작시간-요청시간)을 짧게 하려면, 수행시간이 짧은걸 먼저 처리(SJF)

        // 중요 개념 : 선점SJF 와 비슷
        // 작업을 요청 시점 순으로 담고 있는 작업 큐
        // 소요시간이 적은 순으로 작업을 수행하는 작업 큐
        // 요청 시점에 가능한 작업들을 작업 큐에 넘겨주면, 소요시간이 적은 순서대로 우선순위를 부여하여 작업을 수행

        int seconds = 0;
        // jobs를 요청시간으로 정렬(asc)하는 prioirtyQueue 생성
        PriorityQueue<Integer[]> jobQue = new PriorityQueue<>((o1, o2) -> o1[0].compareTo(o2[0]) );

        // int[] -> Integer[] -> prioirtyQueue에 삽입
        for (int[] job : jobs) {
            jobQue.add(Arrays.stream(job).boxed().toArray(Integer[]::new));
        }

        // 계산
        int size = jobQue.size();
        int totalSeconds = 0;
        while(!jobQue.isEmpty()){
            if(seconds < jobQue.peek()[0]){
                seconds++;
                continue;
            }

            // 해당 시점에 실행할 수 있는 job관리 큐
            PriorityQueue<Integer[]> availableQue = new PriorityQueue<>((o1,o2) -> o1[1].compareTo(o2[1]));
            while(!jobQue.isEmpty() && jobQue.peek()[0] <= seconds){
                availableQue.add(jobQue.poll());
            }

            // 대기시간(=시작시간-요청시간) + 실행시간
            Integer[] currentJob = availableQue.poll();
            totalSeconds += seconds - currentJob[0] + currentJob[1];

            // 쓰지 않은 job은 모두 복구
            jobQue.addAll(availableQue);

            // 현재 작업 실행 완료 시점으로 jump!
            seconds += currentJob[1];
        }

        return Math.round(totalSeconds/size);
    }
}

풀이 방법

  • 선점 SJF와 비슷 = 작업을 요청 시점 순으로 담아서 처리
    • 잘못된 접근 : 작업시작 시간으로 정렬하는것에 집중한것이 실패의 요인
    • 올바른 접근 : 당시의 최적의 해를 구하는 탐욕법과 비슷
      => 매 시점마다 소요시간이 적게 걸리는 작업을 먼저 처리하는게 효율적이라는 풀이를 도출하는것이 중요하다
  • 풀이
    • 작업 요청 시간 별로 정렬-> 첫번째 실행 -> 완료 시점에서 실행가능한 작업중 완료시간이 가장 짧은 작업 실행 * n 번 실행

느낀점

  • 그리디(탐욕법) : 당시의 최적의해를 찾는 방식을 계속하는 방식 -> 이 내용과 비슷
  • 주요 로직
    작업 요청 시간 별로 정렬-> 첫번째 실행 -> 완료 시점에서 실행가능한 작업중 완료시간이 가장 짧은 작업 실행 * n 번 실행
반응형
반응형

문제 설명

이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.

명령어 수신 탑(높이)
I 숫자 큐에 주어진 숫자를 삽입합니다.
D 1 큐에서 최댓값을 삭제합니다.
D -1 큐에서 최솟값을 삭제합니다.
이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이 (java)

import java.util.Collections;
import java.util.PriorityQueue;

class Solution {
    public int[] solution(String[] operations) {
        int[] answer = new int[2];
        PriorityQueue<Integer> maxQue = new PriorityQueue(Collections.reverseOrder());
        PriorityQueue<Integer> minQue = new PriorityQueue();

        for (String str:operations) {
            String[] operation = str.split(" ");
             if(operation[0].equals("I")) { // insert
                 maxQue.add(Integer.parseInt(operation[1]));
                 minQue.add(Integer.parseInt(operation[1]));
             }else if (operation[0].equals("D")){ // delete
                 if(maxQue.size()==0) continue;

                 if("1".equals(operation[1])){  // 최대값 삭제 및 동기화
                     minQue.remove(maxQue.remove());
                 }else if("-1".equals(operation[1])){ // 최소값 삭제 및 동기화
                     maxQue.remove(minQue.remove());
                 }
             }
        }
        answer[0] = maxQue.size()>0 ? maxQue.remove():0;
        answer[1] = minQue.size()>0 ? minQue.remove():0;
        return answer;
    }
}

풀이 방법

  • (정렬된) 우선순위 큐를 2개 사용해서, 최소/최대값 관리
  • 2개의 큐의 동기화 (remove를 이용)

다른사람의 풀이 (java)

import java.util.Collections;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
class Solution {
    public int[] solution(String[] arguments) {
        MidV q = new MidV();

        for(int i = 0; i < arguments.length; i++){
            String[] commend = arguments[i].split(" ");

            int v = Integer.parseInt(commend[1]);
            if(commend[0].equals("I")){
                q.push(v);
            }else{
                switch (v){
                    case 1 : q.removeMax();
                    break;
                    case -1: q.removeMin();
                    break;
                }
            }
        }


        int[] aw = new int[]{q.getMaxValue(),q.getMinValue()};

        return aw;
    }
}

class MidV{
    private PriorityQueue<Integer> leftHeap;
    private PriorityQueue<Integer> rightHeap;

    public MidV(){
        leftHeap = new PriorityQueue<>(10,Collections.reverseOrder());//최대값;
        rightHeap = new PriorityQueue<>();//최소값
    }


    public void push(int v){
        leftHeap.add(v);
    }

    public void removeMax(){

        while(!rightHeap.isEmpty()){
            leftHeap.add(rightHeap.poll());
        }

        leftHeap.poll();
    }

    public void removeMin(){

        while(!leftHeap.isEmpty()){
            rightHeap.add(leftHeap.poll());
        }

        rightHeap.poll();
    }

    public int getMaxValue(){

        if(leftHeap.size() == 0 && rightHeap.size() == 0)
            return 0;

        while(!rightHeap.isEmpty()){
            leftHeap.add(rightHeap.poll());
        }

        return leftHeap.peek();
    }

    public int getMinValue(){

        if(leftHeap.size() == 0 && rightHeap.size() == 0)
            return 0;

        while(!leftHeap.isEmpty()){
            rightHeap.add(leftHeap.poll());
        }

        return rightHeap.peek();
    }

}
더보기

Good Idea : 클래스를 만들어 객체로 관리

느낀점

  • (우선순위) 큐의 동작원리는 잘 알고 가자!
    • 노드 추가/삭제: add/remove
반응형

+ Recent posts