Algorithm
-
백준 14888 연산자 끼워넣기 JAVA(백 트래킹)Algorithm 2021. 11. 17. 17:31
아주 애먹은 문제였기 때문에,, 따로 포스팅 할 가치가 있는 문제였습니다. 제가 짠 코드가 빠른 실행 시간을 보장하지는 않지만, 일반적인 백 트래킹 문제들과 비슷한 코드 구조를 가지고 있기 때문에 좀 더 쉽게 이해 할 수 있는 코드라고 생각하기에 포스팅을 하게 되었습니다. 입력받은 N-1개의 연산자를 백 트래킹을 이용해 완전탐색한 후, 모든 연산자 수열의 경우의 수에 대하여 각각 합을 구해 최댓값과 최솟값을 찾아냅니다. ex ) 연산자 배열이 (1, 0, 1, 0)일 경우 경우의 수 : "+*", "*+" 해당 String 변수를 ArrayList에 모두 넣어준 후, ArrayList에 들어있는 연산자 수열들을 이용해 수들의 합을 완전탐색 합니다. 백 트래킹 방식이긴 하지만, 백 트래킹이 수행되는 요소들..
-
문제 풀이들Algorithm 2021. 9. 14. 15:01
notion.so에 따로 정리해가면서 올린 후 tistory로 임포트 시키는것이 보통 귀찮은일이 아니라, github repo에 업로드하는 형식으로 기록하는게 좋다고 생각했다. 그동안 공부 기록들을 포스팅하지 않은 이유는 따로 기록해둘 깨달음(?)이 없었기 때문인데, 오늘 아주 사소하지만.. 중요한것을 깨달았다. 파이썬 내장 함수들도 시간복잡도가 큰 경우가 있다는것.. 내장 함수들은 최선의 올기르즘으로 시간복잡도가 대부분 n이 넘지 않는다고 생각하고 있었지만, max나 min과 같은 함수들은 O(n)이기 때문에 반복문에서 해당 함수들을 사용한다면 O(n^2)의 시간복잡도를 가지게 되므로 시간초과가 뜰 가능성이 매우 높다. min 함수의 시간복잡도를 생각하지 않고 짠 코드 import sys N = int..
-
알고리즘Algorithm 2021. 9. 1. 14:29
공부한것들 정리 Question 플랫폼 난이도 체감 난이도 Created At Updated At 문제 Two Sum LeetCode Easy Medium @2021년 8월 24일 오후 4:07 @2021년 8월 24일 오후 4:09 Add Two Numbers LeetCode Medium Medium @2021년 8월 24일 오후 4:03 @2021년 8월 29일 오후 7:03 Reverse Integer LeetCode Easy Easy @2021년 8월 24일 오후 4:33 @2021년 8월 29일 오후 7:03 Palindrome LeetCode Easy Easy @2021년 8월 25일 오후 2:58 @2021년 8월 29일 오후 7:04 Longgest common prefix LeetCode..
-
알고리즘Algorithm 2021. 8. 27. 16:44
공부한것들 정리 Question 플랫폼 난이도 체감 난이도 Created At Updated At 문제 Two Sum LeetCode Easy Medium @2021년 8월 24일 오후 4:07 @2021년 8월 24일 오후 4:09 Add Two Numbers LeetCode Medium Medium @2021년 8월 24일 오후 4:03 @2021년 8월 24일 오후 4:33 Reverse Integer LeetCode Easy Easy @2021년 8월 24일 오후 4:33 @2021년 8월 24일 오후 4:50 Palindrome LeetCode Easy Easy @2021년 8월 25일 오후 2:58 @2021년 8월 25일 오후 3:02 Longgest common prefix LeetCode..
-
코딩 인터뷰 완전분석 - 단방향 연결리스트Algorithm 2021. 3. 2. 21:49
ctci - 3일차 단방향 연결리스트 구현이 어려운편은 아니지만, 손으로 써보면서 자세히 생각해보지 않으면 쉽게 이해하기 힘들다. package ctcl_LinkedList; //Basic Linked List public class BasicLinkedList { class Node{ Node next = null; int data; public Node(int data){ this.data = data; } void appendToTail(int data) { Node end = new Node(data); Node tmp = this; while(tmp.next != null) { tmp = tmp.next; } tmp.next = end; } Node deleteNode(Node head, int..
-
소프트웨어 마에스트로 1차 코딩 테스트 후기..Algorithm 2021. 3. 2. 18:45
백준을 자주 풀지 않았었던 상태라.. 큰 기대는 안했지만, 생각보다 문제들이 많이 어려웠다 ㅠ.. 문제를 이해하는데에 시간을 많이 쏟은것이 패인이였다. 데이터베이스 문제는 쉬운 편이었지만, 나머지 알고리즘 문제들은 많이 풀지 못했다. 일주일간 수강신청이다 뭐다 정신이 없어서 시험도 27일에 봤지만, 후기를 이제서야 생각하게 됐다. 어떻게 풀었는지 기억도 안나지만, pc방 요금을 계산하는 문제만 그나마 쉽게 풀었던것 같다. 평소에는 손으로 알고리즘을 짜고 코드를 간결하게 짜본 후에, 직접 코딩을 하는 식으로 공부해왔다. 하지만, 시험 당일에는 .. 뭘 써볼 생각조차 하지 않은채 머리만 붙잡고 테스트에 임한 것 같다. package devil; import java.util.*; public class De..
-
회문과 순열관계인지 확인하기Algorithm 2021. 2. 19. 20:45
처음에 한 손코딩으로는 실패했지만, 문제 해결 과정을 통해 버그를 고쳐냈다. 오늘 해본 문제는 주어진 문자열이 회문과 순열관계인지(해당 문자열을 다시 섞을 경우에 회문을 만들 수 있는지) 판별해주는 문제였다. package arrayandString_4; import java.util.*; public class Palindrome { boolean isPerpalindrome(String str) { int s_count = 0; char[] chararray = str.toCharArray(); Arrays.sort(chararray); for(int i=0;i
-
코딩인터뷰 완전분석 - 1Algorithm 2021. 2. 18. 20:32
아이패드를 가지고 나오지 않은 관계로 공책에 손코딩을 한 날이다. 배열과 문자열 1.1 중복이 없는가 package arrayandString_1; import java.util.ArrayList; public class ArrayandString_1 { ArrayList merge(String[] words, String[] more) { ArrayList sentence = new ArrayList(); for(String w: words)sentence.add(w); for(String w: more)sentence.add(w); return sentence; } boolean isdup(String str) { for(int i=0;i