https://programmers.co.kr/learn/courses/30/lessons/1845너무 어렵게 생각해서 어렵게 풀려고 했는데 알고보니 굉장히 쉬웠다.주어진 배열 nums의 중복을 HashSet을 이용하여 제거해준다.HashSet의 크기와 총 배
https://programmers.co.kr/learn/courses/30/lessons/77884두 수의 사이의 숫자들(두 수 포함)의 약수의 개수를 각각 구하고 조건에 맞게 덧셈과 뺄셈을 해준다.
https://programmers.co.kr/learn/courses/30/lessons/86491명함의 가로 세로 최대 크기를 구해주면 된다.하지만 가로 세로를 바꿨을 때 명함이 들어간다면 더 작은 크기로도 명함을 만들 수 있는 경우가 있다.때문에 아래 케
https://programmers.co.kr/learn/courses/30/lessons/12906스택을 이용해서 순서대로 넣어준다.스택이 비어있으면 값을 바로 넣어준다.스택의 제일 위에 값과 현재 값을 비교해서 다를 때에만 넣어준다. (중복 방지)마지막에
문제 https://programmers.co.kr/learn/courses/30/lessons/68644 풀이 간단하게 이중 for문으로 풀어준다. 값이 중복되면 안되기 때문에 HashSet으로 넣어준다. 마지막에는 stream을 이용하여 정렬해주고, int형 ar
문제 A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요. 풀이 일단 두 배열 모두 오름차순으로 정렬되어 있어야 한다. 이후에 둘 중에 하나라도 포인터가 배열 끝에 도달할 때 까지 while문을 돌려준다. 그
https://programmers.co.kr/learn/courses/30/lessons/425861\. answer array에 배포에 걸리는 일자를 각 인덱스 별로 담아준다.2\. stack을 생성하고 answer를 반복하면서 앞에 일수보다 현재 일수가
문제 https://programmers.co.kr/learn/courses/30/lessons/42626 풀이 우선순위 큐를 이용하여 풀었다. 우선순위 큐 가장 우선순위가 높은 데이터부터 출력해주는 큐 우선순위가 가장 낮은 값이 먼저 값이 입력되고 제거될 때마
https://programmers.co.kr/learn/courses/30/lessons/62048사실 이번 문제는 도저히 모르겠어서 풀이를 참고했다.가로가 w, 세로가 h인 격자판이 있다.대각선을 그어서 못쓰게된 사각형을 제외하고 멀쩡한 사각형을 찾아야 하
https://programmers.co.kr/learn/courses/30/lessons/42587우선순위 큐를 이용해서 풀었다.일단 priorities 배열을 우선순위 큐에 넣었다. 그러면 큐에서 하나씩 꺼낼때마다 가장 큰 값이 나온다.다음에 큐가 비어있을
https://programmers.co.kr/learn/courses/30/lessons/42584처음에 이중 for문으로 풀었는데 답도 틀리고 효율성도 틀렸다.풀이를 찾아보다가 stack으로 풀어야 한다는 것을 알았다.스택이 비어있으면 현재 주식 가격의 i
https://programmers.co.kr/learn/courses/30/lessons/12973스택맨 처음에 스택에 첫번째 문자를 넣고 같은게 나올때까지 계속 스택에 문자를 쌓아준다.연속된 문자가 두개 나오면 제거하고 계속 비교를 한다.문자열의 끝까지 갈
https://programmers.co.kr/learn/courses/30/lessons/77485구현, 행렬가로행세로열가로와 세로를 헷갈리면 안된다.행렬인 경우 x,y라면 x행(가로)에 y열(세로)3행이면 3번째 가로행이고, 2열이면 2번쨰 세로열이다.예제
문자열 비교 문자열 비교 알고리즘이다.ArrayList에 담아서 비교하는데 두 숫자를 하나씩 앞으로 보내서 붙여서 둘 중에 더 큰 숫자를 앞으로 보낸다.예제a=3, b=30 이라면,330 과 303을 비교해서 330이 더 크다면 3을 앞으로 보내줘야 한다.Java의 C
https://programmers.co.kr/learn/courses/30/lessons/12909스택스택을 이용해서 간단하게 풀었다. (설명 생략)효율성 테스트에서 실패되는 케이스가 있어서 이것만 언급하겠다.stack이 비어있으면 넣고 괄호가 ( 이어도 무
https://www.acmicpc.net/problem/1740수학수학에서 2진수를 10진수로 바꾸는 것과 동일하다.먼저 10을 2진수로 바꾸면 1010이 된다.여기서 2의 1제곱과 2의 3제곱을 더한 값은 10이 된다는 것을 알 수 있다.결과1\. 숫자 N
https://programmers.co.kr/learn/courses/30/lessons/42747정렬처음에 조금 이해가 되지 않았지만 완벽히 이해하고 풀이를 적어본다.오름차순으로 정렬하면 h번 이하로 인용된 논문은 굳이 확인하지 않아도 된다.\-> 해당 인
문제 https://programmers.co.kr/learn/courses/30/lessons/12924 알고리즘 투포인터 알고리즘 풀이 코드
https://programmers.co.kr/learn/courses/30/lessons/42885그리디 알고리즘투포인터 알고리즘투포인터 알고리즘으로 풀었다.일단 배열을 정렬한다.포인터 두개를 생성해서 lt는 시작점, rt는 맨 끝점으로 생성한다.lt와 rt
https://programmers.co.kr/learn/courses/30/lessons/12911기본특별한 알고리즘은 필요 없고 Integer의 toBinaryString 메소드만 기억하면 된다.처음에 while문으로 이진수를 구했다가 시간초과가 떴다.이진
https://programmers.co.kr/learn/courses/30/lessons/87946dfs제한사항이 완전 탐색으로 풀어도 가능한 숫자이기 때문에 재귀함수 이용하여 전체 경우의 수를 다 탐색하고 가장 큰 수를 return 해주었다.
문제 https://programmers.co.kr/learn/courses/30/lessons/12899 풀이 3진법으로 코드
https://programmers.co.kr/learn/courses/30/lessons/86971bfs제한사항을 보면 시간초과가 날 수 없어서 충분히 풀 수 있었는데 너무 오래 걸린 거 같다.전력망을 하나씩 차단하면서 둘로나눈 전력망의 차이의 절대값을 리턴
https://leetcode.com/problems/roman-to-integer/submissions/문자열간단하지만 정리해놓으면 도움이 될 거 같아서 정리해본다.로마문자에 대한 이해가 있어야 한다.뒤에 문자가 내 문자보다 크면 내 문자는 독립적으로 숫자화
문제 https://leetcode.com/problems/add-two-numbers/submissions/ 알고리즘 Linked List 풀이 쉬운 문제였는데 이해를 못해서 어렵다고 느낀 거 같다. 두 개의 노드를 뒤집고 자릿수 별로 더해서 다시 뒤집은 노드를
https://leetcode.com/problems/permutations/순열, 백트래킹기존에 Array로 풀때랑 다르게 List로 푸니까 헷갈렸던 거 같다.방문한 배열값도 지우고 실제 List의 값도 지워줘야 기존 값을 지우고 다른값을 채울 수 있다.
문제 https://leetcode.com/problems/longest-substring-without-repeating-characters/ 알고리즘 문자열 풀이 반복문자가 없는 가장 긴 문자열의 길이 인덱스 두개로 풀어나간다. j는 항상 i보다 +1을 해야 중
https://www.acmicpc.net/problem/17413문자열스택을 사용해서 푸는 방법을 봤는데 나는 문자열로만 풀었다.'<' 문자가 나오면 그 앞에 담아둔 문자는 무조건 거꾸로 출력하고 word를 초기화 시킨 뒤 '<' 문자를 담는다.'
https://www.acmicpc.net/problem/5582DP문자열많이 어려웠다. DP와 문자열을 조합해서 풀어야 하기 떄문에..확실하게 이해해서 다음에 꼭 풀어야겠다.일단 두 문자열의 공통되고 연속된 부분 문자열을 찾는게 핵심이다.그러려면 앞에서부터
https://www.acmicpc.net/problem/1181문자열정렬정렬과 문자열을 동시에 이용하는 풀이다.Array의 sort에서 두번째 인자로 정렬의 조건을 직접 설정할 수 있다.양수이면 두 비교대상의 자리를 바꾸고 음수이거나 0이면 그대로 유지한다.
https://www.acmicpc.net/problem/17609문자열정렬투포인터일단 투포인터 알고리즘으로 회문인지 아닌지 판별할 수는 있다.하지만 유사 회문인 경우는 한 문자만 빼서 회문이면 유사 회문이라고 한다.유사 회문인지 알기 위해서는 일단 회문인지
https://www.acmicpc.net/problem/1966구현자료 구조시뮬레이션큐우선순위 큐를 이용하여 구현해주면 되는데 몇가지만 주의하면 잘 풀 수 있다.입력받은 배열을 우선순위 큐에 담아준다.우선순위가 제일 높은 index 값을 미리 담아준다.큐가
https://www.acmicpc.net/problem/1911정렬스위핑 알고리즘처음 길이부터 끝까지 한번만 스캔하면서 문제를 해결하는 것.일단 스위핑 알고리즘을 이용하려면 배열을 정렬시켜야 한다.1\. 웅덩이 시작점 오름차순2\. 시작점이 같으면 끝점으로
https://www.acmicpc.net/problem/4375수학2와 5로 나누어 떨어지지 않는 수이면서 1의 자리수인 숫자만 확인해야 한다.그래서 for문을 돌리면서 이전 값에 10을 곱하고 1을 더해주어야 1의 자릿수만 확인할 수 있다.설명은 코드에 자
https://www.acmicpc.net/problem/17427수학N까지의 모든 약수의 합을 구해야 한다.일단 시간제한을 잘 봐야 한다. 시간제한이 0.5초이다. 대략적으로 1억이 1초이고 N은 백만까지 가능하다. 여기서 우리는 N제곱으로 풀면 시간초과가
https://www.acmicpc.net/problem/1107브루트포스일단 모든 경우의 수를 다 구해본다.이동하려는 채널은 500,000까지다.하지만 버튼을 누르는 최소값을 구하려고 하면 전체 값에서 최소 값을 찾아야 한다.계산하기 쉽게 현재 채널 0번이라