Simple_PS

  • LeetCode[PYTHON3] median-of-two-sorted-arrays
    """ 출처: https://leetcode.com/problems/median-of-two-sorted-arrays/ """ class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float: m = len(nums1) n= len(nums2) if (m+n)%2==0: All = nums1+nums2 All.sort() medium = (m+n)//2 return (All[medium-1]+All[medium])/2 else: All =nums1+nums2 All.sort() medium = (m+n)//2 return All[medium]
  • LeetCode[Java] longest-substring-without-repeating-characters
    /* 현재 풀이는 정답은 나왔지만 아직 최상의 효율이 나오는 코드가 아니라 개선이 필요할 거 같습니다. 하지만 이제부터는 파이썬,자바, 가능하다면 c,javascript까지 한 가지 알고리즘 풀이를 여러가지 언어로 풀어내어 언어 숙련도 및 기초 학습을 병행할 예정입니다. 그리고 기초 문법에 대한 질문을 제외하면 AI는 활용하지 않을 예정입니다. 현업에서는 업무량으로 인해서 자연스럽게 AI를 쓸 수 밖에 없지만 공부를 할 때 단순 기초 체력을 위해서는 되도록 안쓰고 공부를 하려고 합니다. */ // 출처 /* * https://leetcode.com/problems/longest-substring-without-repeating-characters/ */ // 정답 풀이 import java.util.ArrayDeque; import java.util.List; import java.util.Set; import java.util.HashSet; class Solution { public int lengthOfLongestSubstring(String s) { if(s.isEmpty()){ return 0; } // S list로 쪼개기 ArrayDeque<String> SDeque = new ArrayDeque<>(List.of(s.split(""))); System.out.println(SDeque.size()); // 현재값 저장 ArrayDeque<String> now = new ArrayDeque<>(); //검색 Set<String> SearchSet = new HashSet<>(); // 결과 int result = 0; for(String i: SDeque){ // System.out.println(i); if(SearchSet.contains(i)){ int idx = new ArrayList<>(now).indexOf(i); int end = now.size(); int half = end/2; for (int k = 0; k < idx+1; k++){ String NowString = now.peekFirst(); now.pollFirst(); SearchSet.remove(NowString); // System.out.println("제대로 나오나"+now.size()); } now.addLast(i); SearchSet.add(i); } // 포함되어 있지 않을 때 else { now.addLast(i); SearchSet.add(i); result = Math.max(result,now.size()); System.out.println(result); } } return result; } }
  • LeetCode[PYTHON3] longest-substring-without-repeating-characters
    # 정답은 맞으나 시간복잡도로 통과가 힘들어 조금씩 개선시켜서 통과시켜보겠습니다 # 출처:https://leetcode.com/problems/longest-substring-without-repeating-characters/ # 정답 풀이(list > set으로 변경) from collections import deque class Solution3: def lengthOfLongestSubstring(self, s: str) -> int: check = deque(list(s)) start = deque([]) result_list = set() result = 0 for c in check: if c not in start: start.append(c) if "".join(start) not in result_list: result_list.add("".join(start)) result = max(len(start),result) else: while True: k = start.popleft() if k==c: break # print(start) start.append(c) result_list.add("".join(start)) # print(result_list) return result # 풀이 개선 중 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: check = list(s) start = '' result_list = [] result = 0 for c in check: if c not in start: start+=c if start not in result_list: result_list.append(start) result = max(len(start),result) else: result = max(len(start),result) start ='' start+=c print(result_list) return result # 개선 시킨 풀이 from collections import deque class Solution2: def lengthOfLongestSubstring(self, s: str) -> int: check = deque(list(s)) start = deque([]) result_list = deque([]) result = 0 for c in check: if c not in start: start.append(c) if "".join(start) not in result_list: result_list.append("".join(start)) result = max(len(start),result) else: while True: k = start.popleft() if k==c: break # print(start) start.append(c) result_list.append("".join(start)) # print(result_list) return result
  • Lv1 프로그래머스(Programmers)[PYTHON] 유연근무제
    """ 출처: 프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/388351?language=python3 """ # 풀이 과정 """ 목표: 7일 동안 늦지 않고 지정한 출근 시간에 제대로 출근한 직원 단 토,일 제외 > 100으로 나눈 나머지는 59이하 입니다의 의미 파악!! """ def solution(schedules, timelogs, startday): result = 0 for num,LimitTime in enumerate(schedules): # 요일 시작 count = startday # 10분 더했을 때 시간 60분이 넘어서 다른 판단을 해야한다! if (LimitTime+10)%100 > 59: LimitTime = LimitTime+100-60 for person in timelogs[num]: if person <= LimitTime + 10: count+=1 if count > 7: count = 1 continue elif count == 6 or count == 7: count+=1 if count > 7: count = 1 continue else: break else: result+=1 return result
  • Lv0 프로그래머스(Programmers)[JAVA] n번째 원소부터
    // 출처: 프로그래머스, // https://school.programmers.co.kr/learn/courses/30/lessons/181892 class Solution { public int[] solution(int[] num_list, int n) { int[] answer = new int[num_list.length-n+1]; for(int k = n-1; k < num_list.length; k++ ){ answer[ k-(n-1) ] = num_list[k]; } return answer; } }
  • Lv0 프로그래머스(Programmers)[JAVA] 접두사인지 확인하기
    // 출처:프로그래머스, // https://school.programmers.co.kr/learn/courses/30/lessons/181906 //풀이 과정 * import java.util.*; class Solution { public int solution(String my_string, String is_prefix) { List<String> prefix = new ArrayList<>(); String[] split_string = my_string.split(""); for(String i: split_string){ int now_len = prefix.size(); if(now_len==0){ prefix.add(i); continue; } String last_word = prefix.get(now_len-1); String new_word = last_word+i; prefix.add(new_word); } for(String word:prefix){ if( word.equals(is_prefix) ){ System.out.print(my_string); return 1; } } System.out.print(prefix); return 0; } }
  • Lv0 프로그래머스(Programmers)[JAVA] 부분 문자열 이어 붙여 문자열 만들기
    // 출처:프로그래머스, // https://school.programmers.co.kr/learn/courses/30/lessons/181911 // 풀이 과정 class Solution { public String solution(String[] my_strings, int[][] parts) { String answer = ""; int i = 0; for(String string_section: my_strings ){ String[] split_section = string_section.split(""); int s = parts[i][0]; int e = parts[i][1]; i++; for(int k = s; k<=e; k++){ answer+=split_section[k]; } } return answer; } }
  • Lv0 프로그래머스(Programmers)[JAVA] 문자열 여러 번 뒤집기
    // 출처:프로그래머스, // https://school.programmers.co.kr/learn/courses/30/lessons/181913 // 풀이과정 * class Solution { public String solution(String my_string, int[][] queries) { String answer = ""; String[] string_split = my_string.split(""); String after_str = ""; int start; for(int[] check_index:queries){ int s = check_index[0]; int e = check_index[1]; after_str =""; String now_str = ""; for(int i=e; i>=s; i--){ now_str = string_split[i]; after_str +=now_str; } start = s; for(String change_str:after_str.split("")){ string_split[start] = change_str; start++; } } for(String sum_alpha: string_split){ answer+=sum_alpha; } return answer; } }
  • Lv0 프로그래머스(Programmers)[JAVA] 배열 만들기4
    //출처:프로그래머스, //https://school.programmers.co.kr/learn/courses/30/lessons/181918 // list 정의 import java.util.*; class Solution { public int[] solution(int[] arr) { List<Integer> result = new ArrayList<>(); int i = 0; while(i<arr.length){ if(result.size()==0){ result.add(arr[i]); i++; } else{ if( result.get(result.size()-1) <arr[i]){ result.add(arr[i]); i++; } else{ result.remove(result.size()-1); } } // System.out.println(result); } // System.out.print(result); int[] stk = new int[result.size()]; for(int k =0; k<result.size(); k++){ stk[k]=result.get(k); } return stk; } }
  • Lv0 프로그래머스(Programmers)[JAVA] 배열 만들기2
    //출처:프로그래머스 //https://school.programmers.co.kr/learn/courses/30/lessons/181921 /* 범위의 숫자를 for문을 만든 후 해당 숫자를 string으로 변경 후 split 후 각 숫자에 대하여 0,5 진단 그리고 맞으면 append */ // 부족한 개념: 객체 타입 정의도 확인해보기,다이아몬드 연산자, 생성자 호출 import java.util.*; // *:라이브러리 내 모든 거 가져오기 class Solution { public int[] solution(int l, int r) { ArrayList<Integer> check = new ArrayList<>(); for(int i=l; i<=r; i++){ // 쪼개기 위해 한 정수 문자로 변환 String num = String.valueOf(i); // 변환한 문자를 한 문자씩 분리(5,0만 있는 지 확인 위해서) String[] num_split = num.split(""); //new HashSet<>(Arrays.asList(arr)); // set으로 바꾼 후 중복 제거 Set<String> num_set = new HashSet<>(Arrays.asList(num_split)); // 예시 조건 Set<String> case1 = new HashSet<>(Arrays.asList("5")); Set<String> case2 = new HashSet<>(Arrays.asList("0")); Set<String> case3 = new HashSet<>(Arrays.asList("0","5")); if(num_set.equals(case1) || num_set.equals(case2) || num_set.equals(case3) ){ check.add(i); } } // 자바 조건에 따라 리스트 배열로 바꾸기 int[] result = new int[check.size()]; for(int t = 0; t < check.size(); t++ ){ result[t] = check.get(t); } if(result.length == 0){ return new int[]{-1}; } else{ return result; } } }
  • << 1 2 3 4 5 6 >>