20210318-TIL

나영원·2021년 3월 19일
0

T.I.L.

목록 보기
124/145

오늘 할일

  • 포트폴리오 마무리
  • 기업 선정해서 지원하기
  • 알고리즘 문제 풀기

오늘 한 것 & 배운 내용

알고리즘 문제 풀이

거스름돈

  • 내풀이
    • 내풀이(1000엔에서 입력받은 돈을 빼서 거스름돈을 계산한다
    • 배열로 동전의 종류들을 내림차순으로 나열한다
    • for문으로 거스름돈을 동전의 종류대로 나누어서 갯수를 계산한다
      • 나머지를 거스름돈에 더해 다음 동전으로 계산할수 있게 한다
      • 1엔까지 반복한다
  • 다른사람의 풀이
    • 내풀이와 기본적인 골격은 비슷하나 잔돈을 동전으로 나누기전에 잔돈이 동전보다 더큰지를 계산해서 불필요한 연산이 일어나지안도록 하였다
      • 알고리즘에서 이렇게 연산을 줄여줄수 있는 연산은 항상 염두해두어야 하는 것 같다
    • 참고 : [백준 - 5585번] 거스름돈 - JAVA 정리 및 해설 - https://sundries-in-myidea.tistory.com/50

알파벳 개수

  • 내풀이
    • String을 입력받고 char배열로 만든다
    • 알파벳을 카운트하기 위해 26개짜리 int배열을 만들고 값을 모두 0으로 초기화한다
    • for문을 통해 char배열 만큼 반복을 돌리고 char에서 - 97(소문자a 아스키코드)를 빼주어 count[]++를 해주면 해당 알파벳 순서에 값이 ++된다
    • for문을통해 counts 배열을 출력한다
  • 다른사람풀이
    • 푸는방식은 같았지만 내가 구지 하지 않아도 되는 구현들을 하고 있음을 발견했다
      • String 을 입력받아 char배열을 만들지 말고 String에서 charAt을 사용해서 char를 구한다
      • 배열을 만들고 0으로 구지초기화 시키지 않아도 그냥 두면 0으로 알아서 초기화가된다
        • 이 부분은 0으로 하나하나 초기화시킨 자신이 부끄러웠다
      • -97을 하지 않고 그냥 -'a'를 하면 97을 빼게 된다
        • 이부분은 저번에도 한번 본 부분인데 가끔사용하다보니 또 까먹은 것 같다
    • 참고 : https://aig2029.tistory.com/31

하얀 칸

  • 내풀이
    • 전체 칸의 갯수인 8개만큼 반복하는 for문을 만들고 매번 입력값을 String으로 읽어온다
    • sub for문을 만들어 해당 입력값에 char를 읽어와 F가 맞으면 count++하게 한다
      • 하얀칸만 읽어올수 있도록 홀수있때와 짝수일때로 나누고 증가값을+2씩해주었다
    • count를 출력한다
  • 다른사람 풀이
    • 하얀칸을 구분할 때 구지 홀수줄이지 짝수인지 구분하지 않고도 칸의 좌표의 합이 짝수이면 하얀칸으로 볼수 있었다
      • 나는 홀수일때 짝수일때를 분기해주면 오히려 반복문을 도는횟수가 줄어들어 성능이 잘나올거라 생각했는데 오히려 이쪽이 성능이 잘나왔다
      • 같은 차수의 반복문이라면 오히려 다른 분기문이 없는게 더 나은 선택인지도 생각해봐야겠다

더하기 사이클

  • 내풀이
    • 처음 숫자를 입력받아 original 변수에 넣는다
    • a라는 변수에 original을 복사하고 b에 (a /10) + (a % 10) 를 하여 10의자리숫자와 1의 자리 숫자를 더한다
    • 다시 a라는 변수에 a = ((a % 10)*10) + (b %10) 를 하여 a의 1의 자리숫자와 b의 자리숫자가 결합된 형태로 만든다
    • origianl과 a과 같은지를 체크하여 아니라면 반복문을 돌리고 맞다면 반복문을 멈춘다
    • 반복된 횟수를 출력한다
  • 다른사람풀이
    • 내가한 풀이와 크게 다르지 않고 조건문을 do ~while문을 통해 조건을 먼저 한번 돌리게 한 것이 인상적이었다
      • for문을 쓸까 do~while을 쓸까 고민을 좀했는데 익숙한 for문을 선택했지만 알고리즘에서는 do~while을 쓰는것도 좋을 방법같다
      • 알고리즘 말고는 사용할 곳이 거의 없기 때문에 여기서라도 한번씩 써보자
    • 참고 : [백준] 1110번 : 더하기 사이클 - JAVA [자바] - https://st-lab.tistory.com/42

평균

  • 내풀이

    • 과목숫자를 int로 입력받는다
    • 과목들을 입력받아 StringTokenizer에 넣고 과목숫자만큼 for문을 돌려 과목점수의 합계와 최대값을 구한다
    • 마지막에 합계를 최대값으로 나누어 100을 곱해준 후 과목숫자로 나누어 평균을 구한다
      • 소숫점 자리까지 값을 얻기위해 합계를 double로 고쳐주었다
  • 다른사람들의 풀이

    • 내가 한것과 크게 다르지 않고 최대값을 구하기 위해 배열을 만들어 정렬을 한 경우는 배열을 만들어야할 때 최대값을 구하기 쉽게 해주기 때문에 기억해두면 좋을 것 같다
      • 사실 정렬을하나 for문을 돌리거나 비슷한 연산속도일 것 같아서 큰 차이는 없을 것 같다
  • 지난번에 신청해놓은 스타트업 코딩 패스티벌의 모의문제가 도착해서 2문제를 풀게되었다

    • 모의테스트지만 테스트환경에서 푸니 일반과 다른점은 시간제한이 있다는점과, IDE를 사용할수 없는환경이라는 점이었다
      • 물론 모의 테스트라 실제와는 다르게 모두 널널했지만 실제로 IDE를 사용하지 못하는 테스트도 있고 면접장에서 손코딩을 해야되는 경우도 있다더라..
    • 하여 이제부터 알고리즘 문제는 IDE가 아닌 문제 창에서 푸는걸로 해야될 것 같다.. 오래걸리고 어색하겠지만 분명히 도움이 될것 같다

채용공고 읽기 & 이력서 작성

  • 마지막으로 포트폴리오에 대한 피드백을 받고 오늘부터는 지원하기로 해서 채용공고를 몇개 읽고 쓰고 싶었던 기업에 대해서 조사를 한 후 이력서를 작성했다
    • 쓰면서도 뭔가 이게 맞나 싶은 기분이 들면서도 일단 어떻게든 완성시키고 피드백을 받자는 마음으로 이력서를 완성시켰다
    • 완성 시킨 것을 커리어 매니저님께 피드백을 요청했더니 저녁 때 봐주신다고하셔서 그전까지는 좀더 정리해서 피드백을 받고 다시 고쳐서 내일아침에 지원해 보기로 결정했다
  • 오후에 이력서에 대한 첨삭을 받고 수정하였고 마지막 기여하는 점에 대해서 나의 아이디어를 조금 더 반영했으면 좋겠다는 의견을 듣고 좀 더 수정하고 제출하는 기로 결정하였다
    • 조금 더 지원하는 회사에 대한 관심과 열정을 담은 문장을 사용해야되는데 너무 일반적인게 문제였던 것 같다.. 이런 부분들을 한번 정리해놓으면 다음에 지원할 때도 도움이 될 것 같다

사담 & 정리

  • 아침부터 몸이 많이 피곤하고 약간은 감기기운 같은 느낌도 들었다
    • 새로운 스케쥴로 공부를 시작한지 1주일이지나 피로도 어느정도 쌓이고 어제 평소보다 늦게까지 진행하다보니 지친 것 같다
    • 취업준비도 그렇지만 앞으로 취직하고 나서도 바쁘게 지내야 될텐데 건강관리도 중요하니 어떻게 휴식할 것인가에 대한 고민도 계속 해야될 것 같다

내일 할일

  • 기업선정 해서 지원하기
  • 알고리즘 문제 풀기
  • 기술면접 준비
profile
배우는 개발 일기

0개의 댓글