---
# System prepended metadata

title: LeetCode 勉強会

---

# LeetCode 勉強会

だいたい毎週金曜日20:00〜21:00に雑談部屋でやっています。
不定期で休みのことがあります。
Easyレベルしかやっていないゆるゆるの会です。
参加する人はできれば問題にはチャレンジしてください。書いたコードを公開するかは自由です。

## 次回は未定？
引き続きこれ↓をやる予定
https://leetcode.com/problems/longest-common-prefix/description/


## 2024/5/10

https://leetcode.com/problems/longest-common-prefix/description/
```ruby!
# 考え中...
def longest_common_prefix(strs)
    prefix = strs[0]
    strs.shift
    strs.all? do |v|
      v.start_with?(prefix)
    end
end
```

- https://docs.ruby-lang.org/ja/latest/method/String/i/start_with=3f.html


## 2024/4/26

https://leetcode.com/problems/palindrome-number/

palindrome: 回文（逆から読んでも同じになる語句）

```ruby!
# @param {Integer} x
# @return {Boolean}
def is_palindrome(x)
    x.to_s.reverse == x.to_s
end
```


https://leetcode.com/problems/roman-to-integer/description/
↓人間の回答
```ruby!
# @param {String} s
# @return {Integer}
def roman_to_int(s)
    s.gsub!(/IV/, 'あ')
    s.gsub!(/IX/, 'い')
    s.gsub!(/XL/, 'う')
    s.gsub!(/XC/, 'え')
    s.gsub!(/CD/, 'お')
    s.gsub!(/CM/, 'か')
    hash = {
        'I' => 1,
        'V' => 5,
        'X' => 10,
        'L' => 50,
        'C' => 100,
        'D' => 500,
        'M' => 1000,
        'あ' => 4,
        'い' => 9,
        'う' => 40,
        'え' => 90,
        'お' => 400,
        'か' => 900
    }
    array = s.split('').map do |l|
      hash[l]
    end
    array.sum
end
```


↓ChatGPT の回答
```ruby!
def roman_to_int(s)
  roman_values = {
    'I' => 1,
    'V' => 5,
    'X' => 10,
    'L' => 50,
    'C' => 100,
    'D' => 500,
    'M' => 1000
  }

  total = 0
  prev_value = 0

  s.chars.reverse_each do |char|
    value = roman_values[char]
    if value < prev_value
      total -= value
    else
      total += value
    end
    prev_value = value
  end

  total
end

# Test cases
puts roman_to_int("III")       # Output: 3
puts roman_to_int("LVIII")     # Output: 58
puts roman_to_int("MCMXCIV")   # Output: 1994

```

## 2024/4/19

https://leetcode.com/problems/two-sum/

```ruby!
# @param {Integer[]} nums
# @param {Integer} target
# @return {Integer[]}
def two_sum(nums, target)
  num_indices = {}
  nums.each_with_index do |n, i|
    complement = target - n
    if num_indices.key?(complement)
      return [num_indices[complement], i]
    end
    num_indices[n] = i
  end
end
```
