JavaScript에서 정규식(Regular Expression)을 사용하면 문자열 안에 특정 단어가 포함되어 있는지 손쉽게 확인할 수 있습니다. 이때 핵심은 단어 경계(word boundary)를 의미하는 \b 메타 문자입니다.단어 경계(\b)란?\b는 단어의 시작 또는 끝을 나타내는 앵커입니다. 예를 들어 /\bjavascript\b/g 패턴은 javascript라는 단어가 독립적으로 존재할 때만 일치하며, javascripting처럼 다른 글자와 붙어 있는 경우에는 일치하지 않습니다.예제 코드다음은 문장에 javascript라
Selenium WebDriver를 활용하면 브라우저 내에서 실행되는 JavaScript 코드의 반환 값을 손쉽게 가져올 수 있습니다. Selenium은 executeScript 메서드를 통해 JavaScript 명령을 실행할 수 있으며, 실행하고자 하는 JavaScript 코드는 이 메서드의 인자로 전달됩니다.JavaScript 코드에서 값을 반환하려면 return 키워드를 사용해야 합니다. 아울러 JavaScript 관련 기능을 사용하기 위해서는 import org.openqa.selenium.JavascriptExecutor
Python과 Selenium WebDriver를 함께 사용하면 브라우저 안에서 JavaScript를 직접 실행할 수 있습니다. DOM(Document Object Model)은 JavaScript를 통해 페이지의 요소들과 상호작용하며, Selenium은 execute_script 메서드를 이용해 이러한 JavaScript 명령을 실행합니다. 실행하고자 하는 명령은 메서드의 인자(argument)로 전달됩니다. 페이지를 아래로 스크롤하는 것처럼 일부 동작은 Selenium 메서드만으로는 직접 처리하기 어렵습니다. 이런 경우 Java
Selenium WebDriver를 사용하면 웹 페이지의 JavaScript 변수 값을 읽어올 수 있습니다. Selenium은 executeScript 메서드를 통해 JavaScript 명령을 실행할 수 있으며, 실행하고자 하는 JavaScript 코드를 해당 메서드의 인자로 전달하면 됩니다.또한 JavaScript 관련 기능을 사용하기 위해서는 import org.openqa.selenium.JavascriptExecutor 구문을 코드에 추가해야 합니다.기본 문법JavascriptExecutor j = (JavascriptExe
Selenium 자동화 테스트에서 링크를 클릭하는 방법은 크게 두 가지가 있습니다. 바로 WebDriver의 click() 메서드를 사용하는 방법과 JavaScript Executor를 활용하는 방법입니다. 이 글에서는 두 방식의 차이점과 실제 구현 코드를 통해 각각의 사용법을 자세히 살펴보겠습니다.1. WebDriver click()으로 링크 클릭하기Selenium WebDriver에서 링크를 클릭하려면 linkText 또는 partialLinkText 로케이터를 사용할 수 있습니다. 각각 driver.findElement(By.
이번 문제의 요구 사항은 매우 간단합니다. 숫자(Number) 배열을 인수로 받는 JavaScript 함수를 작성해야 합니다.배열의 맨 앞에 0(선행 0)이 존재한다면, 함수는 해당 0들을 제자리(in-place)에서 제거해야 합니다. 만약 배열 앞에 0이 없다면 함수는 아무 작업도 수행하지 않습니다.여기서 주목할 점은 배열 중간이나 끝에 있는 0은 그대로 유지해야 하며, 오직 맨 앞에 연속된 0만 제거한다는 것입니다.문제 예시예를 들어, 입력 배열이 다음과 같다면 −const arr = [0, 0, 0, 14, 0, 6
JavaScript에서 배열의 요소를 정확히 길이가 2인 하위 배열(subarray)로 나누어 새로운 배열을 반환하는 함수를 작성해 보겠습니다. 만약 원본 배열의 길이가 2로 나누어 떨어지지 않는다면, 마지막 하위 배열에는 요소가 하나만 남게 됩니다.문제 이해하기예를 들어 다음과 같은 입력 배열이 있다고 가정해 보겠습니다.const arr = [1, 2, 3, 4, 5, 6, 7];이 경우 기대하는 출력 결과는 다음과 같습니다.const output = [[1, 2], [3, 4], [5, 6], [7]];배열의 길이가 7이므로 앞
숫자로 이루어진 배열을 인자로 받아, 그 배열의 가운데(중앙) 요소를 반환하는 JavaScript 함수를 작성해야 합니다.문제 이해하기예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [1, 2, 3, 4, 5, 6, 7];이 배열의 길이는 7(홀수)이므로, 함수의 출력 결과는 정확히 한 개의 중앙 요소인 4가 되어야 합니다.구현 방법핵심 아이디어는 배열 길이를 절반으로 나누어 중앙 위치를 계산하는 것입니다. 비트 시프트 연산자(>>)와 나머지 연산자(%)를 함께 사용하면, 배열 길이가 홀수인지
이번 글에서는 숫자, 문자열, 그리고 undefined, null, NaN 같은 falsy 값들이 뒤섞여 있는 배열에서 가장 큰 숫자를 찾아 반환하는 JavaScript 함수를 작성해 보겠습니다.예를 들어 입력 배열이 다음과 같다면,const arr = [23, hello, undefined, null, 21, 65, NaN, 1, undefined, hii];함수의 출력 결과는 65가 되어야 합니다.구현 아이디어핵심은 배열을 순회하면서 각 요소를 단항 더하기 연산자(+)로 숫자로 변환하고, 변환 결과가 유효한 숫자일 때만 최댓값과
정수 배열이 주어졌을 때, 배열 안에서 홀수 번 나타나는 유일한 요소를 찾아 반환하는 함수를 작성해야 합니다.문제의 조건상 홀수 번 등장하는 정수는 항상 하나뿐이라고 보장됩니다. 이 문제는 배열을 먼저 정렬한 뒤 접근하면 효율적으로 해결할 수 있습니다. 배열을 오름차순으로 정렬하면 같은 값들이 서로 인접하게 배치되므로, 배열을 한 번만 순회하면서 각 값의 등장 횟수를 세고 홀수 번 등장한 요소를 곧바로 찾아낼 수 있습니다.동작 원리코드의 핵심 로직은 다음과 같습니다.배열을 오름차순으로 정렬하여 동일한 값을 연속으로 모읍니다.직전에
여러 개의 값을 담고 있는 배열 arr가 주어져 있다고 가정해 보겠습니다. 예를 들어 다음과 같습니다.[-3, 5, 1, 3, 2, 10]우리는 이 배열에서 음수 값을 모두 제거하는 함수를 작성해야 합니다. 함수의 실행이 완료된 후에는 배열에 양수만 남아 있어야 합니다.여기에는 두 가지 중요한 조건이 있습니다. 첫째, 임시 배열을 새로 생성하면 안 되며, 둘째, 배열에서 값을 제거할 때는 오직 pop() 메서드만 사용해야 한다는 점입니다.그럼 이 요구 사항을 만족하는 함수의 코드를 살펴보겠습니다.예제 코드// 배열 끝에 있는 음수들
이번 글에서는 문자열 배열을 인수로 받아 배열의 모든 문자열을 하나로 연결하고, 공백은 모두 대시(-)로 바꾼 뒤 그 결과 문자열을 반환하는 JavaScript 함수를 작성해 보겠습니다.문제 이해하기예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [QA testing promotion , Twitter , Facebook , Test];이 경우 기대하는 출력 결과는 다음과 같습니다.const output = QA-testing-promotion-Twitter-Facebook-Test;즉, 각 요소를 이
두 개의 배열을 비교한 결과를 바탕으로 세 번째 배열을 만드는 함수를 작성해야 합니다. 새로 만들어지는 배열은 두 번째 배열의 모든 요소를 그대로 담되, 첫 번째 배열에는 존재하지만 두 번째 배열에는 빠져 있는 요소의 자리는 null로 채워야 합니다. 예시 예를 들어 다음과 같은 두 개의 배열이 있다고 가정해 보겠습니다. const arr1 = [f, g, h]; const arr2 = [f, h]; 이 경우 원하는 출력 결과는 다음과 같습니다. const output = [f, null, h]; 요소 g는 첫 번째 배열에는 있지만
JavaScript에서 한 배열의 요소를 다른 배열의 요소로 교체하려면 splice() 메서드를 사용하면 됩니다. splice()는 배열의 특정 위치에서 요소를 제거하고, 그 자리에 새로운 요소를 삽입할 수 있는 강력한 메서드입니다.splice()로 배열 요소 교체하기아래 예제에서는 values 배열의 앞부분 요소들을 marks 배열의 요소들로 한 번에 교체합니다.예제 코드var values = [John, David, Bob, Mike, Sam, Carol, Adam]; var marks = [55, 78, 90]; Array.p
재귀(recursion)란 하나의 함수가 특정 기저 조건(base condition)을 만족할 때까지 자기 자신을 반복적으로 호출하는 프로그래밍 기법입니다. 이번 예제에서는 재귀 함수를 활용해 숫자를 내림차순으로 출력해 보겠습니다.예제 코드아래 코드에서 recursiveFunction은 전달받은 숫자를 콘솔에 출력한 뒤, 그 숫자가 0보다 크면 자신을 다시 호출하면서 인자를 1씩 감소시킵니다. 이 과정이 반복되어 5부터 0까지 내림차순으로 출력됩니다.function recursiveFunction(num) {  
정수로 이루어진 배열이 주어졌을 때, 최대 한 개의 요소만 제거해서 엄격하게 증가하는(strictly increasing) 수열을 만들 수 있는지 확인하는 문제입니다.여기서 수열 a0, a1, ..., an이 엄격하게 증가한다는 것은 a0 < a1 < ... < an을 만족한다는 의미입니다. 단, 요소가 하나뿐인 수열도 항상 엄격하게 증가하는 것으로 간주합니다.문제 예시예를 들어 sequence = [1, 3, 2, 1]이 주어진 경우 결과는 다음과 같습니다.almostIncreasingSequence(sequenc
이번 글에서는 JavaScript 함수를 작성하여, 주어진 배열 안에서 짝수를 바로 뒤에 한 번 더 반복해 삽입하는 방법을 알아보겠습니다.문제 정의예를 들어 다음과 같은 배열이 주어졌다고 가정해 보겠습니다.const arr = [1, 2, 5, 6, 8];이때 원하는 출력 결과는 다음과 같습니다. 짝수인 2, 6, 8이 각각 한 번씩 반복되어 삽입됩니다.const output = [1, 2, 2, 5, 6, 6, 8, 8];해결 접근 방식핵심 아이디어는 배열의 끝에서부터 앞쪽으로 순회하면서 짝수를 만나면 같은 위치에 값을 복제해 삽
다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [2, 42, 82, 122, 162, 202, 242, 282, 322, 362];이 배열과 하나의 숫자 n을 입력받아, 배열 내에서 n과 가장 가까운 값의 인덱스를 반환하는 JavaScript 함수를 작성해야 합니다. 예를 들어 n이 150이라면, 배열에서 150에 가장 가까운 값은 162이므로 해당 값의 인덱스인 4가 결과로 출력되어야 합니다.구현 아이디어핵심 원리는 매우 간단합니다. 배열을 처음부터 끝까지 순회하면서 각 요소와 목표 숫자 사이의 절대적인 차이(
배열에 포함된 모든 고유(unique) 요소의 개수를 세는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 각 고유 요소가 몇 번 등장하는지 나타내는 객체(object)를 반환해야 합니다.예를 들어, [hi, hello, hi]라는 배열이 주어졌다면 결과는 { hi: 2, hello: 1 }이 되어야 합니다.구현 방법이 기능은 빈 객체를 하나 만든 뒤, 반복문으로 배열을 순회하면서 각 요소의 등장 횟수를 누적하는 방식으로 간단히 구현할 수 있습니다. 핵심 아이디어는 다음과 같습니다.결과를 저장할 빈 객체 counts를
다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.const arr = [3, 5, 5, 2, 23, 4, 7, 8, 8, 9];우리가 작성해야 할 함수는 이 배열과 하나의 숫자 n을 입력받아, 배열의 요소 중 n보다 큰 값과 작은 값이 각각 몇 개인지 나타내는 객체를 반환하는 것입니다.배열을 한 번만 순회하면서 두 가지 카운트를 동시에 구할 수 있도록 reduce() 메서드를 활용해 보겠습니다. 초기값으로 greater(큰 수의 개수)와 smaller(작은 수의 개수)를 0으로 설정하고, 각 요소를 비교하며 카운트를 누적하는 방식