Strfry

문제

언어

  • JavaScript

순서도

  1. 각 문자열에 대해서
  2. 앞의 문자열에서 알파벳의 개수 세기
  3. 뒤의 문자열에서 알파벳의 개수 세서 빼기
  4. 알파벳의 개수가 모두 0 인지 검사하기

문제 풀이 step 1

  • 주어진 문자열 2 개의 알파벳의 개수가 동일한지 검사하는 문제입니다.

후기

  • 알고리즘을 잠깐 놓았다가 다시 공부하고 있는데, 너무 문제에 대한 진심도가 떨어지고, 고쳤던 실수들이 다시 나와서 포스트하게 되었습니다.
  • 문제에서 두 문자열의 길이가 같다는 얘기도 없는데 제 마음대로 같다라고 생각하고 풀어서 문자열 배열 인덱스 접근 문제가 발생했습니다.
  • 고쳤던 실수들을 다시 반복하지 않고, 좀 더 문제를 성의있게 풀어야겠습니다.

소스 코드

const input = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");

const solution = (input) => {
	const n = Number(input[0]);
	const arr = input.slice(1).map((v) => v.split(" "));

	let res = "";
	for (let i = 0; i < n; i++) {
		const [left, right] = arr[i].map((v) => v.split(""));

		const cnts = Array(26).fill(0);

		for (let j = 0; j < left.length; j++) {
			cnts[left[j].charCodeAt(0) - "a".charCodeAt(0)] += 1;
		}

		for (let j = 0; j < right.length; j++) {
			cnts[right[j].charCodeAt(0) - "a".charCodeAt(0)] -= 1;
		}

		let flag = true;
		for (let j = 0; j < 26; j++) {
			if (cnts[j] === 0) continue;

			flag = false;
			break;
		}

		if (flag) res += "Possible\n";
		else res += "Impossible\n";
	}

	return res;
};

console.log(solution(input));