일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 엑셀필터복사붙여넣기
- 미국영어연음
- 필터링후복사붙여넣기
- 클린코드
- TACKING
- 웹API
- 암홀트롭
- Armhole Drop
- MERN스택
- 와끼
- 40HQ컨테이너
- 우레탄지퍼
- 지연환가료
- 비리짐
- 핸드캐리쿠리어차이점
- 엑셀드래그단축키
- 자켓실측
- 비슬론지퍼
- 40HQ컨테이너40GP컨테이너차이
- 영어시간읽기
- 미니마카
- 요척합의
- 헤이큐
- 고급영어단어
- 슈퍼코딩
- 나일론지퍼
- 봉제용어
- 엑셀자동서식
- AATCC
- WHATTIMEOFTHEDAY
- Today
- Total
CASSIE'S BLOG
Leetcode Two Sum 본문
위 내용은 "Two Sum" 문제에 대한 설명입니다. 이 문제는 주어진 정수 배열에서 두 수를 선택하여 그 합이 목표값이 되는 인덱스를 찾는 문제입니다. 여기서는 같은 요소를 두 번 사용할 수 없다는 제약이 있습니다.
예를 들어,
- 첫 번째 예시에서는 nums 배열에서 2와 7을 선택하여 그 합이 9가 되는 인덱스를 찾으면 됩니다.
- 두 번째 예시에서는 3과 2를 선택하여 그 합이 6이 되는 인덱스를 찾으면 됩니다.
- 세 번째 예시에서는 3과 3을 선택하여 그 합이 6이 되는 인덱스를 찾으면 됩니다.
해당 문제의 해결 방법은 여러 가지가 있을 수 있으나, 주로 해시맵을 활용하여 두 수의 차이를 계산하고 이를 이용하여 인덱스를 찾는 방법이 많이 사용됩니다.
정답
내가...
죄송합니다. 설명이 올바르지 않았습니다. 저의 오해가 있었습니다. 다시 설명을 하겠습니다.
첫 번째 코드에서는 다음과 같이 동작합니다.
- i = 0일 때, 내부 반복문은 j가 i+1인 1부터 4까지 반복하며 2 + 4, 2 + 6, 2 + 8, 2 + 10을 확인합니다.
- i = 1일 때, 내부 반복문은 j가 i+1인 2부터 4까지 반복하며 4 + 6, 4 + 8, 4 + 10을 확인합니다.
- i = 2일 때, 내부 반복문은 j가 i+1인 3부터 4까지 반복하며 6 + 8, 6 + 10을 확인합니다.
- i = 3일 때, 내부 반복문은 j가 i+1인 4부터 4까지 반복하며 8 + 10을 확인합니다.
첫 번째 코드에서는 외부 반복문이 nums.length - 1까지 반복되고, 내부 반복문은 외부 반복문의 현재 인덱스(i) 다음 요소부터 시작하여 배열의 끝까지 반복됩니다. 따라서 외부 반복문이 nums.length - 1까지 반복해도 모든 요소 쌍을 확인할 수 있습니다.
두 번째 코드에서는 외부 반복문이 배열의 길이만큼 모두 반복됩니다. 따라서 첫 번째와 동일한 방식으로 동작합니다.
맞습니다. 제가 설명한 내용이 잘못되었습니다. 죄송합니다.
내부 반복문에서 j가 i+1부터 시작하기 때문에, 외부 반복문이 nums.length - 1까지만 반복해도 모든 요소 쌍을 확인할 수 있습니다. 왜냐하면 마지막 요소를 확인하는 경우는 내부 반복문에서 이미 확인되었기 때문에 외부 반복문에서는 다시 확인할 필요가 없기 때문입니다.
따라서 첫 번째 코드에서 외부 반복문이 nums.length - 1까지 반복하는 것은 내부 반복문에서 이미 마지막 요소까지 확인하기 때문에 그 다음 요소부터 시작하는 것입니다.
split('') 메서드는 주어진 문자열을 한 글자씩 분할하여 배열로 반환합니다. 따라서 "hello".split('')은 ['h', 'e', 'l', 'l', 'o']와 같이 문자열을 각각의 문자로 분할한 후 배열로 반환합니다. 이를 활용하면 주어진 문자열을 한 글자씩 접근할 수 있습니다.
이 코드의 작동 방식은 다음과 같습니다:
주어진 숫자 x를 문자열로 변환합니다.
split('') 메서드를 사용하여 문자열을 각각의 문자로 분할합니다.
reverse() 메서드를 사용하여 문자열의 순서를 뒤집습니다.
join('') 메서드를 사용하여 각 문자를 합쳐서 하나의 문자열로 만듭니다.
이렇게 얻은 뒤집은 문자열과 원래의 문자열을 === 연산자를 사용하여 비교합니다.
이 코드의 장점은 간결하고 직관적이며, 자바스크립트에서 제공하는 문자열 메서드를 이용하여 팰린드롬을 확인하는 방법입니다.
그러나 이 코드는 숫자를 문자열로 변환하고, 이를 배열로 변환하여 뒤집은 다음 다시 문자열로 만들기 때문에 추가적인 메모리를 사용합니다. 또한, 숫자를 문자열로 변환하는 것은 처리 속도가 느릴 수 있습니다.
더 효율적인 방법으로는 숫자를 직접 역순으로 만들어서 비교하는 방법이 있습니다. 이 방법은 숫자의 각 자릿수를 추출하여 새로운 숫자를 만들어 비교합니다. 이러한 방법은 더욱 효율적이며, 추가적인 메모리 사용이 없습니다.
'PROGRAMMING > 코테' 카테고리의 다른 글
58. Length of Last Word (0) | 2024.03.21 |
---|---|
프로그래머스 오랜만에 푼 것들 level 0 (0) | 2024.03.13 |
백준 10813번 공바꾸기 (0) | 2023.12.24 |
백준 10171번 자바 고양이 (이스케이프 시퀀스) (0) | 2023.12.24 |