[LeethCode] 160번 Intersection of Two Linked Lists
·
여러가지/알고리즘 & 자료구조
Intersection of Two Linked Lists문제 설명- 두 개의 단방향 연결 리스트 headA와 headB가 주어집니다.- 두 리스트가 어떤 위치에서든 교차할 수 있습니다. 즉, 특정 노드 이후부터 두 리스트가 동일한 노드들을 공유하게 될 수 있습니다.- 이 문제에서 교차점이란 두 리스트가 연결되어 동일한 노드들이 뒤따르는 시작 지점을 의미합니다.- 교차점이 없는 경우 null을 반환합니다. 예시1. 예제11) 입력 : headA = [4,1,8,4,5], headB = [5, 6, 1, 8, 4, 5]2) 출력: 교차 노드 값이 82. 예제21) 입력: headA = [2,6,4], headB = [1,5]2) 출력: null (교차 없음)해결방법투 포인터를 사용합니다. 1. 포인터 설정..
[프로그래머스] 문자열 내마음대로 정렬하기
·
여러가지/알고리즘 & 자료구조
문자열 내 마음대로 정렬하기 (Java)문제 설명주어진 문자열 리스트 strings와 정수 n을 기준으로 각 문자열의 n번째 인덱스에 위치한 문자를 기준으로 오름차순 정렬하는 문제입니다. 만약 n번째 문자가 동일한 문자열이 여럿 있을 경우, 그 문자열들은 사전순으로 정렬합니다.문제 조건strings는 길이 1 이상, 50 이하의 배열입니다.strings의 각 원소는 소문자 알파벳으로 이루어져 있습니다.strings의 각 문자열은 길이 1 이상, 100 이하입니다.모든 strings의 원소의 길이는 n보다 큽니다.입출력 예시예시 1입력: strings = ["sun", "bed", "car"], n = 1출력: ["car", "bed", "sun"]설명: 각 문자열의 1번째 인덱스 문자를 기준으로 보면 "..
[프로그래머스] 푸드 파이트 대회
·
여러가지/알고리즘 & 자료구조
푸드 파이트 대회 문제 해결하기문제 설명푸드 파이트 대회는 수웅이가 매달 열리는 음식 먹기 대회입니다. 선수들은 1대 1로 대결하며, 각 대결마다 주어지는 음식의 종류와 양이 다릅니다. 선수들은 주어진 음식을 일렬로 배치한 후, 한 선수는 가장 왼쪽에서부터, 다른 선수는 가장 오른쪽에서부터 음식을 먹습니다. 중앙에는 물이 있으며, 물을 먼저 마시는 선수가 승리합니다.이 대회의 공정성을 위해, 두 선수는 음식의 종류와 양이 동일해야 하며, 음식을 먹는 순서도 같아야 합니다. 따라서 수웅이는 음식을 적절하게 준비해야 합니다. 여기서, 수웅이가 준비한 음식의 양을 기반으로 대회에 적합한 음식을 배치하는 방법을 찾는 것이 문제의 핵심입니다.예시예를 들어, 3가지 음식을 준비했다고 가정해 봅시다:1번 음식: 3개..
[프로그래머스] k번째수
·
여러가지/알고리즘 & 자료구조
K번째 수 찾기 알고리즘문제 설명배열의 특정 구간을 자르고, 그 구간을 정렬한 후, 정렬된 배열의 K번째 숫자를 찾는 문제입니다. 이를 통해 주어진 조건에 맞는 수를 구하는 과정을 연습할 수 있습니다. 예를 들어, 주어진 배열이 [1, 5, 2, 6, 3, 7, 4]이고, 명령어가 [[2, 5, 3], [4, 4, 1], [1, 7, 3]]인 경우를 살펴보겠습니다.첫 번째 명령어: [2, 5, 3] 배열의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.이 배열을 정렬하면 [2, 3, 5, 6]이 됩니다.3번째 숫자는 5입니다.두 번째 명령어: [4, 4, 1]배열의 4번째부터 4번째까지 자르면 [6]입니다.정렬 후 1번째 숫자는 6입니다.세 번째 명령어: [1, 7, 3]배열의 1번째부터 7번..
[프로그래머스] 숫자 문자열과 영단어
·
여러가지/알고리즘 & 자료구조
숫자 문자열과 영단어문제 설명네오와 프로도는 재미있는 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때, 일부 자릿수를 영단어로 바꾼 카드를 건네줍니다. 프로도는 이 영단어를 기반으로 원래 숫자를 찾는 게임을 하게 됩니다.예를 들어, 다음과 같은 변환이 이루어질 수 있습니다:1478 → "one4seveneight"234567 → "23four5six7"10203 → "1zerotwozero3"이와 같이 숫자의 일부 자릿수가 영단어로 바뀌거나, 바뀌지 않고 그대로인 문자열 s가 주어졌을 때, 이 문자열이 의미하는 원래 숫자를 반환하는 함수를 작성해야 합니다.영단어와 숫자의 매핑아래는 숫자와 영단어 간의 매핑 테이블입니다.숫자영단어0zero1one2two3three4four5five6six7se..
[프로그래머스] 가장 가까운 같은 글자
·
여러가지/알고리즘 & 자료구조
가장 가까운 같은 글자 문제 풀이문제 설명문자열 s가 주어졌을 때, 각 위치마다 자신보다 앞에 나온 동일한 글자가 있는지 확인하고, 가장 가까운 동일한 글자의 거리를 계산하는 문제입니다. 만약 같은 글자가 없으면 -1로 표시하고, 가장 가까운 동일한 글자가 있으면 그 거리를 반환합니다.예시예를 들어, 문자열 s = "banana"가 주어졌을 때, 각 문자는 다음과 같이 처리됩니다:b: 처음 등장했으므로 -1.a: 처음 등장했으므로 -1.n: 처음 등장했으므로 -1.a: 앞에서 두 번째 인덱스에 같은 글자 'a'가 있으므로 2.n: 앞에서 두 번째 인덱스에 같은 글자 'n'이 있으므로 2.a: 앞에서 두 번째, 네 번째 인덱스에 'a'가 있지만, 가까운 곳은 두 번째 앞이므로 2.결과는 [-1, -1, -..
[프로그래머스] 시저암호
·
여러가지/알고리즘 & 자료구조
시저 암호: 파이썬과 자바로 구현해보는 간단한 암호화 방식시저 암호는 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식입니다. 예를 들어, "AB"는 1만큼 밀면 "BC"가 되고, "z"는 1만큼 밀면 "a"로 변환됩니다. 시저 암호는 알파벳이 순환하는 구조이기 때문에 "Z"를 넘어서면 다시 "A"로 돌아옵니다.이 글에서는 파이썬(Python)과 자바(Java) 두 가지 언어로 시저 암호를 구현하고, 각각의 코드와 시간, 공간 복잡도를 분석해 보겠습니다.문제 정의주어진 문자열 s에서 각 알파벳을 n만큼 밀어서 암호화된 문자열을 반환하는 함수를 작성합니다.제한 사항공백은 밀어도 그대로 유지됩니다.문자열 s는 알파벳 대소문자와 공백으로만 이루어져 있습니다.s의 길이는 최대 8000 이하..
[프로그래머스] 핸드폰 번호 가리기
·
여러가지/알고리즘 & 자료구조
문제 설명프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.제한 조건phone_number는 길이 4 이상, 20이하인 문자열입니다.입출력 예phone_number return"01033334444" "***4444""027778888" "*****8888"public class Solution { public String solution(String phone_number) { // phone_number 배열의 길이를 구한다. String[] strAr..