포스트

코딩테스트 기록 1일차

CodingTest

코딩테스트 기록 1일차

1. 2438: 별 찍기

Problem Link
Solved Link

메모

별 출력 문제 이중 for문이 O(n^2)을 가지고있으며 코드의 가독성을 좀 더 높일 방법을 찾아보다 내가 원하는 방법을 찾게됨. 해당 방법은 String객체를 생성해서 작업하는 방식 Link
해당 방법을 사용하면 내 기준 가독성이 좋았으며 시간복잡도 측면에서도 괜찮아보임. ->
유튜브의 페이스북 개발자의 영상을보았었는데 시간복잡도란 단순히 코드의 줄 개수라고 생각해도 좋다 라고 했던게 기억남.
시간복잡도 측면에서 효율성을 높이기 위해 이중 for문 대신 String객체를 생성해 반복하는 방법 선택 또한 이중for문보다 해당 방법이 코드 줄도 짧고 가독성이 좋아보임.

String객체 사용 시간 : 212ms
이중 for문 사용 시간 : 312ms

Desktop View

2. 2480: 주사위 세개

Problem Link
Solved Link

메모

문제 조건에 맞게 반복문 설정
methods : if, Scanner, Math.max


3. 2675: 문자열 반복

Problem Link
Solved Link

메모

입력받은 String값을 StringBuilder로 재정의
methods: string.toCharArray, Scanner, StringBuilder.append, for

4. 2445: 별 찍기 - 8

Problem Link
Solved Link

메모

별 출력 문제 2
2중for문 사용을 지양하기 위해 String객체를 char[]로 받아 작성.
코드의 줄이 짧아 가독성이 좋아져서 만족
또한 기존 이중for문에 비해 시간이 단축됨(676ms -> 280ms)

Desktop View

methods: new String, new char[], replace

5. 1924: 2007년

Problem Link
Solved Link

메모

methods: string.toCharArray, Scanner, StringBuilder.append, for

6. 1193: 분수찾기

Problem Link
Solved Link

메모

규칙찾는데 해맨 문제 결국 인터넷의 도움을 받았다
참고 링크

코드 구성 흐름도

  1. 입력받을 값 받기.
  2. 입력받은 숫자의 라인(레벨) 구하기
  3. 해당 라인의 인덱스 값 구하기
  4. 분자 분모를 인덱스에 따른 값 계산

흐름도를 참조해 내식대로 작업해보았다.
알고리즘을 작성할수 있는 단서들을 하나씩 구해봄

  1. 해당 레벨의 인덱스 값(입력값)
  2. 라인(레벨)
  3. 해당 라인(레벨)까지의 분수의 총 개수(정확한 index를 구하기 위해 필요)
  4. index(레벨에서의 정확한 point를 잡기위해 필요)
  5. 짝수, 홀수 라인(레벨)에 따라 인덱스의 위치가 달라짐

비슷하지만 내가 이해하기 쉬운대로 바꾼후 알고리즘을 짜보았음.
단서들을 구한 다음 라인의 홀수 짝수 여부에 따라 분자 분모값 설정 후 출력

오늘 푼 문제들 중 난이도 있다생각하는데, 사용한 method는 거의없다.. 사고력이 진짜 중요하다고 한번 더 생각하게되는 문제

methods: Scanner, while

7. 25206번: 너의 평점은

Problem Link
Solved Link

메모


methods: switch, Scanner,String.equals,

회고

알고리즘 주차 첫째날이어서, 코테 문제가 쉬운 편이라 생각이 들긴하는데 시간이 갈수록 점점 어려워 질 것 같다. 우선 스터디 인원들과 함께 서로 푼 문제들을 공유하고 좋은 코드에 대해 생각해보는게 괜찮은 부분인거 같다.
잘하는 개발자가 되기 위한 첫 걸음인데, 꾸준히 잘 해내보자.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.